Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
Assignment
Assignment
割り当て

...

 ターゲット・フィールドにASQN属性が設定されていない場合は、*STRICT_NULL_ASSIGN関数オプションが使用可能にされるかどうかによって動作が異なります。デフォルトでは、フィールド・タイプの*NULL値はターゲット・フィールドに割り当てられます。次の例では、#Cが数値フィールドなのでゼロに設定されます。フィールド・タイプごとの*NULL valueの定義については、「CHANGE のパラメータ」を参照してください。

Code Block
#C := #B

...

Code Block
#C := #B.AsValue( 1 ) * 5

次のトピックも参照してください。

*SQLNULLキーワード

組み込みプロパティ.IsSqlNull

組み込みメソッド.AsValue

Anchor
Conditions
Conditions
条件

  • 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処理