@Sort (式言語)

リストをソートします。

注: この @ 関数は、Release 6 で新しく追加されました。

構文

@Sort( list ; [ order ]; customSortExpression )

パラメータ

list

文字列、数値、日時のリスト。ソートする値です。その他のデータ型を指定した場合は、そのまま返されます。

[ order ]

キーワード。オプション。以下のキーワードを使用してソートの順序を指定します。

[ACCENTSENSITIVE]

[ACCENTINSENSITIVE]

[ASCENDING]

[CASESENSITIVE]

[CASEINSENSITIVE]

[CUSTOMSORT]

[DESCENDING]

[PITCHSENSITIVE]

[PITCHINSENSITIVE]

順序キーワードを複数指定する場合は、コロン (:) で区切ります。デフォルトでは、自動的に以下のキーワードによってソート順が指定されます。

[ASCENDING]:[CASESENSITIVE]:[ACCENTSENSITIVE]:[PITCHSENSITIVE]. 

デフォルトのソート順キーワードをオーバーライドするには、その逆のキーワードを指定します。例えば、@Sort 関数の [ASCENDING] をオーバーライドするには、[DESCENDING] を指定します。指定したキーワードが競合する場合は、リストの最後のキーワードがソート順に影響します。

customSortExpression

式。[CUSTOMSORT] キーワードを指定する場合は必須です。リストの要素の値を 2 つずつ比較するには、式で一時変数 $A と $B を使用します。$A が $B よりも大きいことを示す場合は、@True または 0 より大きい数値を返します。$B が $A よりも大きいことを示す場合は、@False または 0 以下の数値を返します。

戻り値のデータ型が数値でない場合は、エラーが発生します。

戻り値

list

文字列、数値、日時のリスト。ソートされた値が返されます。

使用法

英語文字セットで昇順、大文字と小文字の区別、アクセント記号の区別を指定した場合のソート順序は、0 から 9 までの数字、a から z と A から Z までの英字、アポストロフィ、ダッシュ、残りの特殊文字の順です。 全角と半角の区別は、ダブルバイトの言語に影響します。

注: 大文字と小文字を区別するソートは、大文字と小文字の違いがあるだけで他は同じ単語の場合のみ適用されます。この場合、小文字が最初にソートされます。つまり、cat、Cat、CAT の順です。大文字と小文字の違いだけでなく他も異なる単語の場合は、大文字と小文字を区別せずにソートされます。

ソートオプションとして Unicode スタンダードソートを設定しているときは、次のキーワードや組み合わせは選択できません。

Unicode スタンダードソートを指定するには、notes.ini の変数 $CollationType を @UCA に設定するか、以下のダイアログボックスの [Unicode スタンダードソート] チェックボックスをオンにします。

*デフォルトのソート順序が選択されていない場合は、[データベースのプロパティ] インフォボックスと [設計のプロパティ] インフォボックスの Unicode オプションは無効化されます。

Unicode ソートの詳細については、http://oss.software.ibm.com/icu/ を参照してください。

日時値の時刻の部分にワイルドカードを指定した (時刻を指定しない) 場合は、日付が同じであるすべての日時値と一致します。例えば、次の日付は同じとみなされます。

[12/12/2000] : [12/12/2000 1:00 PM] : [12/11/2000 - 12/13/2000]

これらの値はランダムにソートされるため、ソートを複数回実行した場合は、そのたびに順序が異なることがあります。

  1. 次の式は、Albany、New Boston、new york、San Francisco の順に返します。
    @Sort(@ThisValue)
  2. 前の例と同じです。
    @Sort(@ThisValue; [ASCENDING])
  3. この式は、San Francisco、New Boston、new york、Albany の順に返します。
    @Sort(@ThisValue; [DESCENDING])
  4. 次の式は、Albany、New Boston、New York、San Francisco の順に返します。
    @Sort(@ProperCase(@ThisValue); [ASCENDING])

これらの例は、フォームフィールドのデフォルト値として使用されます。

  1. [Price] 列 ([Gear] ビューの 5 番目の列) の内容が、Ski Pants カテゴリの 3 つのエントリに対応する価格 79、85、1009 ならば、次の式では 1009;85;79 が返されます。
    @Sort(@DbLookup("";"Server/Name/Notes":"Ski¥¥Clothing.nsf";"Gear";"Ski Pants";5);[DESCENDING])
  2. 次の式では、[movies] フィールドの内容が、タイトルが短い順に返されます。[movies] フィールドの内容が "casablanca":"The Great Escape":"ET": ならば、ET;casablanca;The Great Escape が返されます。
    @Sort(movies;[CASESENSITIVE]:[CUSTOMSORT];@If(@Length($A) < @Length($B);@False;@Length($A) > @Length($B);@True;@False))

    [CUSTOMSORT] キーワードを指定すると、大文字と小文字を区別するキーワードがオーバーライドされることに注意してください。

  3. 次の式は、パスワードを強力な順に返します。[pswd1] フィールドの内容が「Hello」、[pswd2] フィールドが「HE5ll+o」、[pswd3] フィールドが「Hel$lo」ならば、HE5ll+o;Hel$lo;hello が返されます。
    @Sort(pswd1:pswd2:pswd3;[CUSTOMSORT];@If(@PasswordQuality($A) < @PasswordQuality($B);@True;@PasswordQuality($A) > @PasswordQuality($B);@False;@False))
  4. [animals] フィールドに [CAT]、[Cat]、[dog]、[cat] が含まれる場合、次の式は、cat、Cat、CAT、dog の順に返します。
    @Sort(animals;[CASESENSITIVE])