文字列の連結 (_)
詳細
文字列連結演算子 (_) は、そのオペランドを文字列と解釈し、文字列値を返す二項 (2 オペランド) 演算子です。
連結演算子を使用して、文字列リテラル、数字、式、変数を結合します。以下の形式をとります。
operand_operand
連結演算子は、右のオペランドを左のオペランドの後に結合させた文字列を結果として返します。連結演算子は、そのオペランドを特に解釈せず、文字列値として扱います。
例
以下の例は、2 つの文字列を結合します。
WRITE "High"_"chair"
上記は、Highchair を返します。
ある数値リテラルを別の数値リテラル、または非数値文字列に連結すると、InterSystems IRIS は最初にそれぞれの数値をキャノニック形式に変換します。以下の例は、2 つの数値リテラルを結合します。
WRITE 7.00_+008
これは、78 を返します。
以下の例は、数値リテラルと数値文字列を結合します。
WRITE ++7.00_"+007"
これは、文字列 7+007 を返します。
以下の例は、2 つの文字列と NULL 文字列を結合します。
SET A="ABC"_""_"DEF"
WRITE A
これは、"ABCDEF" を返します。
NULL 文字列は、文字列の長さに影響しないため、無数の NULL 文字列を文字列に結合できます。
文字列の長さには上限があります。"文字列長の制限" を参照してください。文字列を連結しようと試みた結果、その文字列がこの最大文字列サイズを超えた場合、<MAXSTRING> エラーになります。
複数の連結を伴う ObjectScript 文は、アトミック (全か無か) 処理です。<MAXSTRING> エラーが発生した場合、連結によって拡大された変数は、連結前のその値を保持します。例えば、bigstr が長さ 2,000,000 の文字列である場合、連結 SET bigstr=bigstr_"abc"_bigstr を試みると <MAXSTRING> エラーになります。bigstr の長さは 2,000,000 のままになります。
連結エンコード文字列
ObjectScript 文字列には、それらの文字列を結合できるかどうかを制限できる内部的なエンコードが含まれるものがあります。
-
ビット文字列は、別のビット文字列、ビット文字列でない文字列、空の文字列 ("") のどれとであれ、結合できません。これを実行しようとすると、生成される文字列を使用するときに、<INVALID BIT STRING> エラーが返されます。
-
リスト構造文字列は、別のリスト構造文字列または空の文字列 ("") と結合できます。しかし、リスト以外の文字列とは連結できません。これを実行しようとすると、生成される文字列を使用するときに、<LIST> エラーが返されます。
-
JSON 文字列は、別の JSON 文字列、JSON 文字列でない文字列、空の文字列 ("") のどれとであれ、結合できません。これを実行しようとすると、生成される文字列を使用するときに、<INVALID OREF> エラーが返されます。