Page History
...
| Code Block |
|---|
Define Field(#A) Type(*DEC) Length(9) Decimals(0) Input_Atr(ASQN) Default(*SQLNULL) Define Field(#B) Type(*DEC) Length(9) Decimals(0) Input_Atr(ASQN) Default(*SQLNULL) Define Field(#C) Type(*DEC) Length(9) Decimals(0) Default(*NULL) |
次のトピックも参照してください。
ASQN (Allow SQL Nulls: SQL Nullを許可) 属性
| Anchor | ||||
|---|---|---|---|---|
|
...
ターゲット・フィールドにASQN属性が設定されていない場合は、*STRICT_NULL_ASSIGN関数オプションが使用可能にされるかどうかによって動作が異なります。デフォルトでは、フィールド・タイプの*NULL値はターゲット・フィールドに割り当てられます。次の例では、#Cが数値フィールドなのでゼロに設定されます。フィールド・タイプごとの*NULL valueの定義については、「CHANGE のパラメータ」を参照してください。
| Code Block |
|---|
#C := #B |
...
| Code Block |
|---|
#C := #B.AsValue( 1 ) * 5 |
次のトピックも参照してください。
| Anchor | ||||
|---|---|---|---|---|
|
- SQL Nullかどうかを検査するには、*IS *SQLNULLまたは*ISNOT *SQLNULL、あるいは 組み込みプロパティ.IsSqlNull を使用してください。
- IF_NULLまたは.IsNullを使用すると、SQL NullフィールドはFALSEを返します。
- SQL Nullは値を表さないため、フィールドを比較するために*EQ、*LE、*GTなどの比較演算子を使用し、比較のいずれかの要素がSQL Nullの場合は、比較によってSQL Nullが生成されます。また、*ORまたは*AND演算子と組み合わせると、SQL Null要素により引き続きSQL Nullが生成されます。SQL Nullを生成する条件式の評価結果はfalseになります。
SQLNULL値がtrueの場合、SQLNULLの比較は常にSQLNULLのままになります。すなわち、式によってSQLNULLを検査する場合にSQLNULLが存在すると、式ではSQLNULL値が維持されます。このような場合は、*ORIFブール機能を使用してください。
Code Block IF COND((#DATE2.IsSqlNull) *orif (#DATE1 *gt #DATE2)) #DATE2 := #DATE1 ENDIF
条件によってNullおよびSQL Nullの両方に対してTRUEが返されるようにするには、*ORIFブール機能と、組み込みプロパティ.IsSqlNull および組み込みプロパティ .IsNull を組み合わせて使用します。サンプル・フィールド#Aについての次の条件は、フィールドがゼロまたはSQL Nullの場合にTRUEを返します。
Code Block (#A.IsSqlNull) *orif (#A.IsNull)
条件にSQL Nullと他の特定の値の両方にTRUEを返させる場合は 組み込みメソッド.AsValue を使用します。次の条件は、フィールドが1またはSQL Nullの場合にTRUEを返します。
Code Block #A.AsValue(1) *EQ 1
...
SQL Nullフィールドの値をより適切な別の値に変更する場合は 組み込みメソッド.AsValue を使用します。 例えば、#BがSQL Nullである場合は、式'#B. AsValue(1) + 1'の結果は2(および#Bが4である場合は5)です。
SQL Null処理