2 つのリストの要素のアルファベット順を、並列演算によって比較します。
@Compare( textlist ; textlist ; [ options ] )
textlist
文字列リスト。最初の 2 つのパラメータは文字列リストです。一方のリストが短いとき、長い方のリストと同じ長さになるまで、短い方のリストの最後の要素が繰り返されます。各リストの対応する要素が比較されます。
[ options ]
キーワードリスト。以下のキーワードを指定できます。指定したオプションが競合する場合は、最後に指定したオプションが有効になります。
[CASESENSITIVE] (デフォルト)
[CASEINSENSITIVE]
[ACCENTSENSITIVE] (デフォルト)
[ACCENTINSENSITIVE]
[PITCHSENSITIVE] (デフォルト)
[PITCHINSENSITIVE]
result
数値リスト。各要素は文字列リストの対応する要素を比較した結果で、次の 3 つのいずれかの値となります。
英語文字セットの比較順序は次のとおりです。アポストロフィ、ダッシュ、0 から 9 までの数字、a から z と A から Z までの英字、残りの特殊文字の順です。英字の比較順序は順番どおりであり、小文字が先で、 a、A、b、B、というように z、Z まで続きます。このような順で比較されるため、例えば「New Boston」より「new york」が先であるという変則的な結果が生じることがあります。このような動作の問題を解消するには、[CaseInsensitive] オプションを使用するか、@UpperCase、@LowerCase、@ProperCase を使用します。
ソートオプションとして Unicode スタンダードソートを設定しているときは、次のキーワードや組み合わせは選択できません。
Unicode スタンダードソートを指定するには、notes.ini の変数 $CollationType を @UCA に設定するか、以下のダイアログボックスの [Unicode スタンダードソート] チェックボックスをオンにします。
*デフォルトのソート順序が選択されていない場合は、[データベースのプロパティ] インフォボックスと [設計のプロパティ] インフォボックスの Unicode オプションは無効化されます。
Unicode ソートの詳細については、http://oss.software.ibm.com/icu/ を参照してください。
list := "Boston" : "Tokyo" : "Moscow" : "N" : "n";
result := @text(@compare(list; "N"; [CaseInsensitive]));
@Prompt([OKCANCELLIST] : [NOSORT];
"Result"; ""; ""; list + " (" + result + ")")
@If(Names1 = "" | Names2 = ""; ""; @do(
comp1 := @Compare(Names1; Names2;
[CASEINSENSITIVE] : [ACCENTINSENSITIVE]);
comp2 := @Replace(@Text(comp1); "-1" : "0" : "1";
" is less than " : " is equal to " : " is greater than ");
Names1 + comp2 + Names2))
@If(Column1 = ""; ""; @Do(
Low1 := @Compare(Column1; "A"; [CASEINSENSITIVE]);
High1 := @Compare(Column1; "Z"; [CASEINSENSITIVE]);
Low2 := @Replace(@Text(Low1); "-1" : "0" : "1"; "Does not start with alpha" : "" : "");
High2 := @Replace(@Text(High1); "-1" : "0" : "1"; "" : "" : "Does not start with alpha");
Low2 + High2))
@For(n:=1;n <= @Elements(sailboats);n := n+1;
FIELD result := @If(n=1;@If(@Compare(sailboats[n];"d";[CASEINSENSITIVE])=-1;
sailboats[n];"");@If(@Compare(sailboats[n];"d";[CASEINSENSITIVE])=-1;
result:(sailboats[n]);result)));
結果
[sailboats] フィールドの内容が "Hunter":"C&C":"Pearson":"Contessa":"Bristol" の場合、この式は "C&C;Contessa;Bristol" を返します。
LotusScript® 言語の StrCompare 関数