記事
· 2024年8月4日 1m read

IRIS SQLで、二重引用符「"」を、リテラル値を示す区切り文字として使う方法=区切り識別子を無効にする

これは、InterSystems FAQサイトの記事です。

区切り識別子は、区切り文字で囲まれた一意の識別子です。
InterSystems SQL は、その区切り文字として二重引用符 「"」 をサポートしています。
一方、リテラル値を区切る場合は、一重引用符「'」を使用します。
例えば、下記のSQLにおいて、
①は、Nameの値が「AAA」という文字列である、という検索条件と解釈されますが、
②は、Name列 = AAA列、という結合条件と解釈されます。※実際にAAA列が無ければエラーとなります。

select * from Samle.Person
where Name = 'AAA'


select * from Sample.Person
where Name = "AAA"


リテラル値(文字列、数値)を示す区切り文字として二重引用符「"」を使用したい場合は、
下記を実行し、この区切り識別子サポートするためのオプションを無効にします。

//現在の状態を確認する
USER> write $SYSTEM.SQL.Util.GetOption("DelimitedIdentifiers")
1
//0=「無効」にセット
USER>do $SYSTEM.SQL.Util.SetOption("DelimitedIdentifiers",0)
 
//確認
USER> write $SYSTEM.SQL.Util.GetOption("DelimitedIdentifiers")
0 

 
これにより、「'AAA'」と「"AAA"」はどちらも同様に「AAA」という文字列を示すことになり、
上記①・②のSQLは、どちらも、同義に解釈されます。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください