**これは [InterSystems FAQ サイト](https://faq.intersystems.co.jp/)の記事です。**
リストコレクション(Property XXX As list of %String;)で定義したプロパティは、SQL関数: $LISTBUILD() 、$LISTFROMSTRING() を使用して操作できます。
各SQL関数については、下記ドキュメントページをご参照ください。
[InterSystems SQL リファレンス - $LISTBUILD() 【IRIS】](https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_d_listbuild)
[IRIS SQL リファレンス - $LISTFROMSTRING() 【IRIS】](https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_d_listfromstring)
[Caché SQL リファレンス - $LISTBUILD()](https://docs.intersystems.com/latestj/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_d_listbuild)
[Caché SQL リファレンス - $LISTFROMSTRING()](https://docs.intersystems.com/latestj/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_d_listfromstring)
/// クラス定義例
Class ISJ.ListOfData Extends %Persistent
{
Property listdata As list Of %String;
}
SQL文実行例は以下の通りです。
USER>do $system.SQL.Shell()
--- 表示省略 ---
USER>>insert into ISJ.ListOfData (listdata) values($LISTBUILD('あ','い','う'))
10. insert into ISJ.ListOfData (listdata) values($LISTBUILD('あ','い','う'))
1 Row Affected
--- 表示省略 ---
↓次は $LISTFROMTOSTRING()を使用した例↓
USER>>insert into ISJ.ListOfData (listdata) values($LISTFROMSTRING('か,き,く'))
12. insert into ISJ.ListOfData (listdata) values($LISTFROMSTRING('か,き,く') )
1 Row Affected
statement prepare time: 0.0180s, elapsed execute time: 0.0001s.
---------------------------------------------------------------------------
USER>>quit
USER>set obj=##class(ISJ.ListOfData).%OpenId(1) // オブジェクトで確認
USER>write obj.listdata.Count()
3
USER>write obj.listdata.GetAt(1)
あ
USER>write obj.listdata.GetAt(2)
い
USER>write obj.listdata.GetAt(3)
う
USER>set obj=##class(ISJ.ListOfData).%OpenId(2)
USER>for i=1:1:obj.listdata.Count() {write obj.listdata.GetAt(i),!}
か
き
く
ODBC形式でアクセスするとカンマ区切りデータとして取り扱えます。
※表示形式変更方法は、DATE型やTIME型カラムに対する方法と同じです。
詳細は関連トピックをご参照ください。
USER>do $system.SQL.Shell()
-- 表示省略 --
USER>>set selectmode = odbc // ←ODBCモードへの切り替え
selectmode = odbc
USER>>select * from ISJ.ListOfData
14. select * from ISJ.ListOfData
ID listdata
1 あ,い,う
2 か,き,く
2 Rows(s) Affected
statement prepare time: 0.0003s, elapsed execute time: 0.0006s.
---------------------------------------------------------------------------
USER>>update ISJ.ListOfData set listdata='さ,し,す' where ID=1
15. update ISJ.ListOfData set listdata='さ,し,す' where ID=1
1 Row Affected
statement prepare time: 0.0007s, elapsed execute time: 0.0003s.
---------------------------------------------------------------------------
USER>>select * from ISJ.ListOfData
16. select * from ISJ.ListOfData
ID listdata
1 さ,し,す
2 か,き,く
2 Rows(s) Affected
statement prepare time: 0.0003s, elapsed execute time: 0.0005s.
USER>>quit
---------------------------------------------