SQL 構文

キーワードに関する注意事項

SQL ブロックには、セミコロン(;)で区切られた複数の句を含めることができます。


個々のブロックは、以下のキーワードを使用して、以下のタスクを実行するために使用することができます。

  1. 選択を解除する - CLEAR SELECTION
  2. スカラー変数を設定する - LET
  3. リスト変数を設定する - LIST
  4. オブジェクトを選択する - SELECT
  5. オブジェクトを選択解除する(選択からオブジェクトを削除する) - DESELECT
  6. オブジェクトを削除する - DELETE
  7. フィールドまたは変数の値を変更する - SET および UPDATE
  8. グリッドに表示したり、CSV ファイルへ出力できる値のテーブルを生成する - SELECT

これらのうち最初の 3 項目を除き:


次に、キーワードについて詳しく説明します。
  1. 選択を解除する

    選択を解除するには、次の句を使用します

    CLEAR SELECTION


  2. スカラー変数を設定する

    スカラー変数を設定するには、LET キーワードを使用します。例:

    LET <variable name> = <value>


  3. リスト変数を設定する

    リスト変数を設定するには、LIST キーワードを使用します。例:

    LIST <variable name> = <value 1>, <value 2>, <value 3>, <value n>


  4. オブジェクトを選択する

    オブジェクトを選択するには、SELECT キーワードを使用します。例:

    SELECT
    SELECT ALL
    SELECT SELECTED
    SELECT
     FROM pipe
    SELECT ALL 
     FROM pipe
    SELECT SELECTED 
     FROM pipe
    SELECT 
     WHERE x > 0
    SELECT ALL 
     WHERE x > 0
    SELECT SELECTED 
     WHERE x > 0
    SELECT 
     FROM pipe 
     WHERE diameter > 250
    SELECT ALL 
     FROM pipe 
     WHERE diameter > 250
    SELECT SELECTED 
     FROM pipe 
     WHERE diameter > 250

    現在の選択モードを使用して現在のテーブルから選択する場合、SELECT キーワードは省略できます。例:

    x > 0


  5. オブジェクトを選択解除する

    オブジェクトを選択解除するには、DESELECT キーワードを使用します

    DESELECT
    DESELECT ALL
    DESELECT SELECTED
    DESELECT 
     FROM pipe
    DESELECT ALL 
     FROM pipe
    DESELECT SELECTED 
     FROM pipe
    DESELECT 
     WHERE x > 0
    DESELECT ALL 
     WHERE x > 0
    DESELECT SELECTED 
     WHERE x > 0
    DESELECT 
     FROM pipe 
     WHERE diameter > 250
    DESELECT ALL 
     FROM pipe 
     WHERE diameter > 250
    DESELECT SELECTED 
     FROM pipe 
     WHERE diameter > 250


  6. オブジェクトを削除する

    オブジェクトを削除するには、DELETE キーワードを使用します

    DELETE
    DELETE ALL
    DELETE SELECTED
    DELETE 
     FROM pipe
    DELETE ALL 
     FROM pipe
    DELETE SELECTED 
     FROM pipe
    DELETE 
     WHERE x > 0
    DELETE ALL 
     WHERE x > 0
    DELETE SELECTED 
     WHERE x > 0
    DELETE 
     FROM pipe 
     WHERE diameter > 250
    DELETE ALL 
     FROM pipe 
     WHERE diameter > 250
    DELETE SELECTED 
     FROM pipe 
     WHERE diameter > 250


  7. フィールドまたは変数の値を変更する

    フィールドまたは変数の値を変更するには、SET キーワードを使用します。代入式をカンマ(,)で区切ることにより、一度に複数の値を設定できます。

    SET 
      x = x – 100, 
      y = y – 100
    SET 
      x = x – 100, 
      y = y – 100 
     WHERE ground_level > 20


    現在のテーブルと現在の選択モードを上書きするには、UPDATE キーワードを使用する必要があります

    UPDATE ALL SET 
      x = x – 100, 
      y = y - 100
    UPDATE SELECTED SET 
      x = x – 100, 
      y = y - 100
    UPDATE node SET 
      x = x – 100, 
      y = y - 100
    UPDATE ALL node SET 
      x = x – 100, 
      y = y - 100
    UPDATE SELECTED node SET 
      x = x – 100, 
      y = y – 100
    UPDATE ALL SET 
      x = x – 100, 
      y = y – 100 
     WHERE ground_level > 20
    UPDATE SELECTED SET 
      x = x – 100, 
      y = y – 100 
     WHERE ground_level > 20
    UPDATE node SET 
      x = x – 100, 
      y = y - 100 
     WHERE ground_level > 20
    UPDATE ALL node SET 
      x = x – 100, 
      y = y – 100
     WHERE ground_level > 20
    UPDATE SELECTED node SET 
      x = x – 100, 
      y = y – 100 
     WHERE ground_level > 20


  8. 値のテーブルを生成する

    複数の値を選択するには、SELECT キーワードを使用し、その後に出力する値をカンマで区切って続けます。例:

    SELECT 
      node_id, 
      MAX(us_links.conduit_width), 
      MIN(us_links.conduit_width)


    グリッドまたは CSV ファイル内の列に付けられたタイトルは、キーワード AS を使用して上書きすることができます。例:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS mymin


    タイトルを囲む引用符は使用しても使用しなくてもかまいません。引用符を使用しない場合、スペースは使用できず、英数字以外の文字も使用できません。例:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS '£% my min'


    FROM キーワードを使用すると、テーブルを上書きすることができます。例:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS mymin 
     FROM node


    結果は、INTO FILE キーワードを使用してファイルが指定されていない限り、グリッドに表示されます。例:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS mymin 
     FROM node 
     INTO FILE 'c:\temp\mynodes.csv'


    WHERE キーワードを使用すると、レポート対象のオブジェクトをフィルタすることができます。例:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS mymin 
     FROM node 
     WHERE MAX(us_links.conduit_width) > 450


    GROUP BY キーワードを使用すると、オブジェクトのグループに集約された結果を計算することができます。例:

    SELECT 
      MAX(MAX(us_links.conduit_width)) 
     GROUP BY system_type


    HAVING キーワードを使用すると、レポートされる集計結果を制限することができます。例:

    SELECT 
      MAX(MAX(us_links.conduit_width)) 
     GROUP BY system_type 
     HAVING MAX(MAX(us_links.conduit_width)) < 1000


サポートされている SQL 構文

次の表は、このAutodesk製品でサポートされている SQL 構文の一覧です。追加の注意事項がその後にあります。

SQL の使用方法とサポートされているすべての関数についての包括的な情報については、「InfoWorks WS Pro の SQL」テクニカル ペーパーを参照してください。

コメント テキスト

コメント テキストは、クエリーの実行時には無視されます。コメントは、行単位(コメント構文の後の行全体がコメント テキストとして扱われる)またはブロック単位(ブロックは行の一部として指定され、複数行にまたがる)で指定できます。コメント テキストは、SQL ダイアログ内で構文的に緑色でハイライト表示されます。

構文 説明
// 行コメント
/* ブロック コメント: コメント テキスト ブロックの開始
*/ ブロック コメント: コメント テキスト ブロックの終了

関数

構文 説明

INT(数値)

数値の整数部。

FLOOR(数値)

パラメータ以下で最も近い整数。

CEIL(数値)

パラメータ以上で最も近い整数。

FIXED(変換する数値、小数点以下の桁数) 数値と 0 から 8 までの小数点以下の桁数を受け取り、小数点以下を必要に応じて切り上げまたは切り下げしてその桁数に丸め、数値を文字列に変換します。小数点以下の桁数が 0 の場合、文字列には小数点はありません。

ABS(x)

次の絶対値を取ります: x

例:

関数は次を返します: x 次の場合: x >= 0-x それ以外の場合

LEFT(s,n)

1 つめを返します n 文字列の文字 s、または文字列全体 n は文字列の長さよりも大きいです

RIGHT(s,n)

最後を返します n 文字列の文字 s、または文字列全体 n は文字列の長さよりも大きいです

MID(s,n,m)

文字列の部分文字列を返します s に次の値を含む m 位置から始まる文字 n、開始位置は 1 からカウント

LEN(s)

文字列の長さを返します s

IIF(x,y,z)

x が true の場合は、 yを返し、それ以外の場合は、 z

NVL(x,y) If x が NULL の場合は、 yを返し、それ以外の場合は、 x

SUBST(s1,s2,s3)

文字列の最初のインスタンスを置き換えます s2 文字列内に s1 次の文字列を持つ s3

例:

SUBST(node_id,'01','ND')

ノード ID「01880132」に適用されると、「ND880132」を返します。

GSUBST(s1,s2,s3)

文字列のすべてのインスタンスを置き換えます s2 文字列内に s1 次の文字列を持つ s3

例:

GSUBST(node_id,'01','ND')

ノード ID「01880132」に適用されると、「ND88ND32」を返します

GENSUBST(s,regexp,format)

文字列を置換 s 定義されている書式とともに、正規表現の場合 regxp 文字列に一致 s、それ以外の場合は文字列を返します s 変化なし。

例:

GENSUBST(node_id,'(01)(..)(..)(.*)','ND\2\4a\1')

ノード「01880132」に適用されると、「ND8832a01」を返します

注:
  • 正規表現を使用すると、文字列を括弧で囲むことでサブ式に分割できます。
  • 上記の例では、「(01)(..)(..)(.*)」は、01 で始まる 6 文字以上の任意のノード ID に一致します。最初の(..)は文字列の 3 番目と 4 番目の文字に対応し、2 番目の(..)は 5 番目と 6 番目の文字に対応し、(.*)は残りの文字列に対応します。
  • 一致した場合、文字列は定義された形式で返されます。ここで、\1 は角括弧で囲まれた最初のサブ式「01」の値を表し、\2 は 2 番目の角括弧で囲まれたサブ式(..)を表します(この場合は、「88」)。以下、\9 まであります。
ヒント: 正規表現は強力であり、ここで示した例よりもはるかに多くのことができます。正規表現とその構文の詳細については、Wikipedia のこの記事を参照してください。
NL()

改行文字を返します。

たとえば、3 行のノート フィールドを設定するには

SET notes = 'Set' + NL() + 'new' + NL() + 'line'

YEARPART(s)

YEARPART は、日付の年に適用され、その年を返します。日付が 24/09/2024 の場合(DD/MM/YYYY 形式を仮定)、YEARPART2024 になります。

注: YEARPARTMONTHPART、および DAYPART 関数は、日付として書式設定された日付フィールドと文字列フィールドで動作します。適用される文字列が日付でない場合は、0 が返されます。

MONTHPART(s)

MONTHPART は、日付の月に適用され、その月を返します。上記の例を取り上げると、MONTHPART09 です。

注: YEARPARTMONTHPART、および DAYPART 関数は、日付として書式設定された日付フィールドと文字列フィールドで動作します。適用される文字列が日付でない場合は、0 が返されます。

DAYPART(s)

DAYPART は、日付の日に適用され、その日を返します。上記の例では、DAYPART24 です。

注: YEARPARTMONTHPART、および DAYPART 関数は、日付として書式設定された日付フィールドと文字列フィールドで動作します。適用される文字列が日付でない場合は、0 が返されます。

NOW()

現在を定義する、パラメータのない関数。この関数はコンピュータの現在の日付と時刻を調べるため、NOW を使用した SQL クエリーを実行するたびに毎回最新の状態に書き換える必要はありません。

DATEPART(日付)

DATEPART は、日付の日部分を返します(たとえば、日付から分を削除します)。

TIMEPART(日付)

TIMEPART は、日付の時刻部分を午前 0 時からの分数として返します。

YEARSDIFF(開始日,終了日)

YEARSDIFF は、2 つの日付の間の満年数を返します。

注: YEARSDIFFMONTHSDIFF、および DAYSDIFF 関数は、該当する日付の分部分を無視します。

MONTHSDIFF(開始日,終了日)

MONTHSDIFF は、2 つの日付の間の満月数を返します。

注: YEARSDIFFMONTHSDIFF、および DAYSDIFF 関数は、該当する日付の分部分を無視します。

DAYSDIFF(開始日,終了日)

DAYSDIFF は、2 つの日付の間の満日数を返します。

注: YEARSDIFFMONTHSDIFF、および DAYSDIFF 関数は、該当する日付の分部分を無視します。

INYEAR(日付, 数値)

INYEAR は、数値として受け取った年に日付が含まれる場合は true を返します。

注: INYEARINMONTHINYEARSINMONTHS 関数のパラメータのいずれかが数値でない場合、関数は false を返します。数値が整数でない場合、数値は最も近い整数に丸められます。

INMONTH(日付,月,年)

INMONTH は、数値として受け取った年と月に日付が含まれる場合は true を返します。

注: INYEARINMONTHINYEARSINMONTHS 関数のパラメータのいずれかが数値でない場合、関数は false を返します。数値が整数でない場合、数値は最も近い整数に丸められます。

INYEARS(日付,開始年,終了年)

INYEARS は、日付が開始年から終了年までの間にある場合は true を返します(開始年と終了年はその年を含む)。

注: INYEARINMONTHINYEARSINMONTHS 関数のパラメータのいずれかが数値でない場合、関数は false を返します。数値が整数でない場合、数値は最も近い整数に丸められます。

INMONTHS(日付,開始月,開始年,終了月,終了年)

INMONTHS は、日付が開始年の開始月から終了年の終了月までの間に含まれる場合は true を返します。

注: INYEARINMONTHINYEARSINMONTHS 関数のパラメータのいずれかが数値でない場合、関数は false を返します。数値が整数でない場合、数値は最も近い整数に丸められます。

ISDATE(推定される日付)

フィールドがデータベースから取得された日付の場合は true を返し、文字列の場合はそれが日付に変換できる場合は true を返し、それ以外の場合は false を返します。

MONTHYEARPART(日付)

MONTHYEARPART は、文字列「<月>/<年>」を返します。

YEARMONTHPART(日付)

YEARMONTHPART は、文字列「<年>/<日>」を返します。

MONTHNAME(日付)

MONTHNAME は、(現在のロケールでの)月の名前を返します。

SHORTMONTHAME(日付)

SHORTMONTHNAME は、月の省略名を返します(ロケールと Windows による省略形によって決定されます)。

DAYNAME(日付)

DAYNAME は、(現在のロケールでの)曜日の名前を返します。

SHORTDAYNAME(日付)

SHORTDAYNAME は、曜日の省略名を返します(ロケールと Windows による省略形によって決定されます)。

NUMTOMONTHNAME(n) 1 から 12 までの整数を受け取り、月の名前を返します。
NUMTOSHORTMONTHNAME(n) 1 から 12 までの整数を受け取り、月の名前の短縮形(JAN など)を返します。
TODATE(年,月,日) 年、月、日を整数として受け取り、日付を返します。
TODATETIME(年,月,日,時,分) 年、月、日を整数として受け取り、日付を返します。

リスト関数

これらの関数の目的は、値を範囲に分割したり、値をスコア付けしたり、値をリストにマップすることです。

構文 説明

AREF(n,list)

AREF にリスト変数を指定 list 1 から長さまでの数値 list、次を返します nth 要素内の要素。

LEN(リスト変数)

LEN は、リスト変数内のアイテム数を返します。

RINDEX(式, リスト変数)

RINDEX は、リストがソートされている場合にのみ使用できる関数です。RINDEX 関数の目的は、基本的に値を「バケット」に分割することです。

LOOKUP(式, リスト変数)

ある場合 n リスト内の項目と式の値は 1 から n を含む、LOOKUP は、リストから適切な項目を返します。

MEMBER(式, リスト変数)

MEMBER は、式の値がリスト内のいずれかの値である場合は true を返し、そうでない場合は false を返します。

INDEX(式, リスト変数)

式の結果がリストの最初の値の場合、INDEX は 1 を返し、2 番目の値の場合は 2 を返し、式の結果がリストでない場合は 1 を返します。

TITLE(n,list)

TITLE は、RINDEX を使用して値を複数の範囲に分割している場合に、「バケット」のタイトルを指定します。

数理関数

構文 説明

LOG(x)

対数(底 10)を計算します x

LOGE(x)

対数(底 e)を計算します x

EXP(x)

ex を計算します。

SIN(x)

正弦を計算します x

COS(x)

余弦を計算します x

TAN(x)

正接を計算します x

ASIN(x)

逆正弦を計算します x

ACOS(x)

逆余弦を計算します x

ATAN(x)

逆正接を計算します x

ATAN2(x,y)

逆正接を計算します x / y 兆候を使用して xy 四半円点を決定します。

GAMMALN(x)

ガンマ関数の対数(底 e)を返します x

集計関数

集計関数は、以下に基づいて値を計算できるようにするために使用されます。

  • 配列フィールドのすべての行
  • 特定の方法でクエリーされるオブジェクト タイプに関連するすべてのオブジェクト
  • シミュレーション結果のすべてのタイムステップ
構文 説明

ANY(条件式)

ANY は、配列フィールドのいずれかの行に対して式が true の場合に true を返します。例:

ANY(details.code=’JDS’)

これは、details 配列フィールドのいずれかの行にコード JDS がある場合は true、それ以外の場合は false を返します。

注: 括弧内の式には、複数の配列フィールド、オブジェクトの他のフィールド、定数、および非集計関数を含めることができ、これらはすべて算術演算子、比較演算子、および論理演算子と組み合わせることができます。

ALL(条件式)

ALL は、すべての行/関連オブジェクト/タイムステップに対して式が true の場合に true を返します。

COUNT(条件式)

COUNT は、式が true である行/関連オブジェクト/タイムステップの数をカウントします。

MAX(条件式)

MAX は、すべての行/関連オブジェクト/タイムステップの最大値(数値、日付、または文字列)を返します。

注: MAXMIN はどちらも数値、日付、文字列フィールドで動作します。文字列フィールドの場合、文字列間の比較は、インストールされている Windows で設定されている言語に基づいて実行されます。

MIN(条件式)

MIN は、すべての行/関連オブジェクト/タイムステップの最小値(数値、日付、または文字列)を返します。

注: MAXMIN はどちらも数値、日付、文字列フィールドで動作します。文字列フィールドの場合、文字列間の比較は、インストールされている Windows で設定されている言語に基づいて実行されます。

AVG(条件式)

AVG は、すべての行/関連オブジェクト/タイムステップについて、式(数値のみ)のすべての非 null 値の平均を返します。

FIRST(条件式)

FIRST は、最初の行/関連オブジェクト/タイムステップの式の値を返します。

LAST(条件式)

LAST は、最後の行/関連オブジェクト/タイムステップの式の値を返します。したがって、値を計算する際には、配列フィールド内のレコードの 1 つが考慮されます。

算術演算子

構文 説明

+

これらの演算子はすべて、数値に指定した処理を行います。


<> は、文脈によって「等しくない」または「同じではない」という意味です。


また、+ を使用して文字列を連結することもできます。+ は、文字列に対して特別な意味を持つ唯一の算術演算子です。

-

*

/

=

<

<=

>

>=

<>

^

^ 演算子は「累乗する」という意味です。たとえば、x^2 は x の 2 乗を意味します。

%

% 演算子は「剰余」を意味するため、a % b は a / b の余りを返します。たとえば、year % 10 は年の最後の桁になります。

論理演算子

構文 説明

AND

示されるとおりです

OR

NOT

その他の演算子

構文 説明

IS NULL

フィールドが NULL の場合に true と評価されます

IS NOT NULL

フィールドが NULL でない場合に true と評価されます

LIKE

LIKE で使用できる 2 つの特殊文字は次のとおりです。

  • * は「あらゆる項目に一致」という意味
  • ? は「1 文字に一致」という意味

文字列内の他のすべての文字は、その文字そのものにのみ一致します。

一致の仕組みは DOS と同様です。

  • LIKE '*' はあらゆる項目に一致します
  • LIKE 'ABC*' は ABC で始まるあらゆる項目に一致します
  • LIKE '???' は任意の 3 文字の文字列に一致します

DOS と同様に、* はすべての項目が一致します。したがって、LIKE '*AB' で最後に AB がある項目を見つけようとしたり、LIKE '*AB*' で文字列の任意の位置に AB がある項目を見つけたりすることはできません。

この LIKE の動作は、Microsoft Access の動作とは異なります。

MATCHES

MATCHES では、正規表現を使用して、LIKE 演算子よりも複雑な検索を実行できます。

重要な構文要素は次のとおりです。

  • . - (ドット)任意の英数字
  • * - 0 個以上の直前の文字。つまり、B* は 0 個以上の B に一致します
  • + - 1 個以上の直前の文字。つまり、B* は 1 個以上の B に一致します
  • ? - 0 個または 1 個の直前の文字。つまり、B? は 0 個または 1 個の B に一致します

一致の仕組みは次のとおりです。

  • MATCHES '.*' はあらゆる項目に一致します
  • MATCHES 'ABC.*' は ABC で始まる任意の文字列に一致します
  • MATCHES 'ABC.+' は ABC で始まり、その後に少なくとも 1 文字以上続く任意の文字列に一致します
  • MATCHES '.*ABC.*' は ABC を含む任意の文字列に一致します
  • MATCHES '.*ABC' は ABC で終わる任意の文字列に一致します
  • MATCHES 'RS*' は、R で始まり、その後に 0 個以上の S が続く任意の文字列に一致します

正規表現は強力であり、上記の基本例よりもはるかに多くのことができます。正規表現とその構文の詳細については、Wikipedia のこの記事を参照してください。

定数

構文 説明

TRUE

示されるとおりです

FALSE

NULL

集計関数(結果のみ)

sim の代わりに tsr を使用すると、1 つのスナップショットだけでなく、すべてのシミュレーション結果に対して集計関数を使用することができます。

構文 説明

DURATION(条件式)

式が true である時間(分単位)(結果のみ)。例:

DURATION(tsr.pressure < x)

これは、ノードの圧力が次の値を下回る累積時間(分単位)を返します: x

INTEGRAL(条件式)

各タイムステップの式の値とタイムステップの長さ(分単位)を掛け合わせた値の合計(結果のみ)。例:

INTEGRAL(tsr.flow*60)

これは、L/S がフロー単位として使用されていると仮定して、パイプを流れる水の総量(リットル単位)を返します。

WHENEARLIEST(条件式)

式が true になる最も早い時間(結果のみ)。例:

WHENEARLIEST(tsr.pressure < x)

これは、ノードの圧力が次の値を下回るのが最も早いタイムステップの日時を返します: x

WHENLATEST(条件式)

式が true である最新の時刻(結果のみ)。例:

WHENLATEST(tsr.pressure < x)

これは、ノードの圧力が次の値を下回る最後のタイムステップの日時を返します: x

EARLIEST(条件式)

式の最初の非 null 値(結果のみ)。これは、IIF 関数と組み合わせて使用された場合にのみ、意味のある答えが得られる可能性があります。例:

EARLIEST(IIF(tsr.pressure < x, tsr.pressure, NULL))

これは、ノードの圧力が次の値を下回るのが最も早いタイムステップにおけるノードの圧力を返します: x

LATEST(条件式)

式の最後の非 null 値(結果のみ)。これは、IIF 関数と組み合わせて使用された場合にのみ、意味のある答えが得られる可能性があります。例:

LATEST(IIF(tsr.pressure < x, tsr.pressure, NULL))

これは、ノードの圧力が次の値を下回る最新のタイムステップにおけるノードの圧力を返します: x

WHENMAX(条件式)

式が最大になる時間(結果のみ)。例:

WHENMAX(tsr.pressure)

これは、ノードが記録された最大圧力に達した日時を返します。

WHENMIN(条件式)

式が最小になる時間(結果のみ)。例:

WHENMIN(tsr.pressure)

これは、ノードが記録された最小圧力に達した日時を返します。

SQL の使用に関する追加の注意事項

  1. SQL エンジンでは型チェックがあまり行われないため、次のような便利な機能が多数あります。
    1. SET user_number_1 = x > 390000
      は、x > 390000 の項目では user_number_1 を 1 に、その他の項目では 0 に設定します。これは、条件式が true の場合は 1、false の場合は 0 と評価されるためです。
    2. SET user_text_1 = z
      は、user_text_1 を z 値に設定します。この操作を行うと、文字列から不要な小数点と小数点以下の桁が切り捨てられます。これは、これらの文字列を受け取り、必要に応じて他の項目を最後に連結できるようにするためです。
    3. SET user_number_1 = user_text_1
      は、文字列が有効な数値の場合に値を割り当てます。
  2. NULL の動作は少し複雑です。
    1. 基本的に、NULL は「値がない」値です。グリッド ビューは、数値に対して同じように機能しますが、数値のグリッド セルに 0 を入力した場合と空白のままにしておく場合では違いがあります。「空白」値は NULL です。つまり、x IS NULL を実行した場合、空白セルを持つオブジェクトが選択されます。
    2. SQL の一般的なルールでは、NULL が含まれるすべての演算で NULL を返します。
      • 3 + NULL は NULL です
      • 3 > NULL は NULL です
      • 3 < NULL は NULL です

      SQL エンジンは、等価性を少し異なる方法で処理します。x = NULL および x <> NULL は、それぞれ X IS NULL および X IS NOT NULL と同じです。

  3. 文字列の場合、空の文字列は NULL であると同時に "" (空の文字列)です。したがって、
    • asset_id IS NULL
    • asset_id = ""
    • LEN(asset_id)=0
    上記はすべて、アセット ID 文字列を持たない項目を選択します。
  4. ブール型フィールド(チェック ボックス付きのフィールド)には NULL の概念はありません。
  5. 数字で始まるフィールド名を含めると、解析エラーが発生することがあります。このようなフィールド名は、SQL クエリーで、[ ] の間に配置することをお勧めします。

    たとえば、次の代わりに、

    SET 2d_pt_id = subcatchment_id
    次を使用できます。
    SET [2d_pt_id] = subcatchment_id