Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

$LISTTOSTRING (ObjectScript)

リストから文字列を作成します。

Synopsis

$LISTTOSTRING(list,delimiter,flag)
$LTS(list,delimiter,flag)

引数

引数 説明
list InterSystems IRIS リスト。$LISTBUILD または $LISTFROMSTRING を使用して作成されるか、$LIST を使用して別のリストから抽出されます。
delimiter オプション — 部分文字列の区切りに使用される区切り文字。delimiter は、引用符付きの文字列として指定します。delimiter を指定しない場合、既定はコンマ (,) 文字です。
flag オプション — 3 ビットのバイナリ・ビット・フラグ。利用可能な値は、0 (000)、1 (001)、2 (010)、3 (011)、4 (100)、5 (101)、6 (110)、および 7 (111) です。既定値は 0 です。

概要

$LISTTOSTRING は InterSystems IRIS リストを受け取り、それを文字列に変換します。結果の文字列では、リスト内の要素は delimiter によって区切られます。

リストは、区切り文字列を使用しないエンコード形式でデータを表します。したがって、リストには可能な文字をすべて含めることができますが、ビット文字列データに最適です。$LISTTOSTRING は、このリストを区切られた要素を持つ 1 つの文字列に変換します。また、指定された文字 (または文字列) を区切り文字として設定します。これらの区切られた要素は、$PIECE 関数を使用して処理できます。

Note:

ここで指定する delimiter は、ソース・データに含まれる文字であってはいけません。InterSystems IRIS は、区切り文字の役割を果たす文字と、データ文字としての同じ文字を区別しません。

ZWRITE コマンドを使用すると、エンコードされていない形式でリストを表示できます。

引数

list

1 つ以上の要素を持つ InterSystems IRIS リスト。リストは、$LISTBUILD を使用して作成されるか、$LIST を使用して別のリストから抽出されます。

list 引数内の式が有効なリストとして評価されない場合は、<LIST> エラーが発生します。

   SET x=$CHAR(0,0,0,1,16,27,134,240)
   SET a=$LISTTOSTRING(x,",")   // generates a <LIST> error

delimiter

出力文字列内の部分文字列を区切るのに使用される文字 (または文字列)。(引用符で囲まれた) 数値または文字列リテラル、変数名、文字列に評価される式を指定できます。

通常、区切り文字には、文字列データ内で決して使用されることがなく、部分文字列を区切る文字としてのみ使用される特定の文字が設定されます。区切り文字には、複数文字から成る文字列を指定することもできますが、それを構成する個々の文字は文字列データ内で使用できます。

delimiter を指定しない場合、既定の区切り文字はコンマ (,) です。NULL 文字列 ("") は区切り文字として指定可能ですが、この場合は、部分文字列が区切り文字なしで連結されます。引用符を区切り文字として指定するには、引用符を二重に指定するか ("""")、または $CHAR(34) を使用します。

flag

3 ビットのバイナリ・ビット・フラグ:

  • 1 ビットは、list 内の省略された要素の処理方法を指定します。0 は <NULL VALUE> エラーを発行します。1 は省略された各要素に対して空の文字列を挿入します。

    以下の例では、list に、省略された要素があります。このリスト要素を処理するため、flag=1 オプションが指定されています。

      SET colorlist=$LISTBUILD("Red",,"Blue")
      WRITE $LISTTOSTRING(colorlist,,1)

    flag の 1 ビットが省略されているか、0 に設定されている場合 (flag=0、2、4、または 6)、$LISTTOSTRING は <NULL VALUE> エラーを生成します。

    flag=1 の場合、空の文字列値のある要素は、省略された要素と区別がつきません。$LISTBUILD("Red","","Blue") および $LISTBUILD("Red",,"Blue") は同じ $LISTTOSTRING 値を返します。この flag=1 の動作は、"InterSystems SQL リファレンス" の説明のとおり、InterSystems SQL の $LISTTOSTRING の実装と互換性があります。

  • 2 ビットは、特定の文字が含まれる文字列の引用符を指定します。これらの文字列は、delimiter 文字 (既定ではコンマ)、二重引用符文字 (")、改行文字 (LF = $CHAR(10))、およびキャリッジ・リターン文字 (CR = $CHAR(13)) です。このビットは flag=2 または 3 によって設定します (flag=6 または 7 の場合、このオプションは設定されますが、4 ビット・オプションによって上書きされます)。

  • 4 ビットは、すべての文字列の引用符を指定します。このビットは flag=4、5、6、または 7 によって設定します

以下の例は、4 つの要素を持つリストを作成し、要素がコロン (:) 文字で区切られた文字列に変換します。

   SET namelist=$LISTBUILD("Deborah","Noah","Martha","Bowie")
   WRITE $LISTTOSTRING(namelist,":")

このコードは、結果として "Deborah:Noah:Martha:Bowie" を返します。

以下の例は、4 つの要素を持つリストを作成し、要素が *sp* 文字列で区切られた文字列に変換します。

   SET namelist=$LISTBUILD("Deborah","Noah","Martha","Bowie")
   WRITE $LISTTOSTRING(namelist,"*sp*")

このコードは、結果として "Deborah*sp*Noah*sp*Martha*sp*Bowie" を返します。

以下の例では、省略された要素 1 つと空の文字列値のある要素 1 つを持つリストを作成します。$LISTTOSTRING は、このリストをコロン (:) 文字で区切られた要素を持つ 1 つの文字列に変換します。省略された要素があるため、<NULL VALUE> エラーを避けるには flag=1 が必要です。ただし、flag=1 の場合、省略された要素と空の文字列値は区別されません。

   SET namelist=$LISTBUILD("Deborah",,"","Bowie")
   WRITE $LISTTOSTRING(namelist,":",1)

このコードは、結果として "Deborah:::Bowie" を返します。

以下の例では、コンマを含む要素のリストを作成します。既定では、$LISTTOSTRINGdelimiter としてコンマを使用します。最初の例では、コンマを含む要素は、コンマで区切られた 2 つの要素と区別できません。2 番目の例では、flag=3 が指定されているため、この要素に引用符が付いています。3 番目の例では、flag=7 が指定されているため、すべての要素に引用符が付いています。

   SET pairlist=$LISTBUILD("A,B","C^D","E|F")
   WRITE $LISTTOSTRING(pairlist,,1)
     // returns A,B,C^D,E|F
   WRITE $LISTTOSTRING(pairlist,,3)
     // returns "A,B",C^D,E|F
   WRITE $LISTTOSTRING(pairlist,,7)
    // returns "A,B","C^D","E|F"

$LISTVALID では以下のすべてを有効なリストと見なします。flag=1 で、$LISTTOSTRING はすべてについて NULL 文字列 ("") を返します。

  WRITE "1",$LISTTOSTRING("",,1),!
  WRITE "2",$LISTTOSTRING($LB(),,1),!
  WRITE "3",$LISTTOSTRING($LB(UndefinedVar),,1),!
  WRITE "4",$LISTTOSTRING($LB(""),,1)

flag=0 で、$LISTTOSTRING は以下に対してのみ NULL 文字列 ("") を返します。

  WRITE "1",$LISTTOSTRING("",,0),!
  WRITE "4",$LISTTOSTRING($LB(""),,0)

その他は <NULL VALUE> エラーを生成します。

関連項目

FeedbackOpens in a new tab