Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$LISTTOSTRING

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

Synopsis

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

パラメータ

list Caché リスト。$LISTBUILD または $LISTFROMSTRING を使用して作成されるか、$LIST を使用して別のリストから抽出されます。
delimiter オプション — 部分文字列の区切りに使用される区切り文字。delimiter は、引用符付きの文字列として指定します。delimiter を指定しない場合、既定はコンマ (,) 文字です。
flag オプション — 省略されたリスト要素の処理方法を指定するブーリアン値。0 は <NULL VALUE> エラーを発行します。1 は要素に対して空の文字列を挿入します。既定値は 0 です。

概要

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

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

Note:

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

パラメータ

list

1 つ以上の要素を持つ Caché リスト。リストは、$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

list 内の省略されたリスト要素の処理方法を指定するために使用されるブーリアン・フラグ。以下の例では、$LISTBUILD で省略された要素のあるリストを作成し、このリスト要素を処理するため flag=1 オプションが指定されています。

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

flag オプションが省略されているか、0 に設定されている場合、$LISTTOSTRING は <NULL VALUE> エラーを生成します。

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

以下の例は、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" を返します。

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

  WRITE "1",$LISTTOSTRING("",,1),!
  WRITE "2",$LISTTOSTRING($LB(),,1),!
  WRITE "3",$LISTTOSTRING($LB(NULL),,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