これは、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
USER>do $SYSTEM.SQL.Util.SetOption("DelimitedIdentifiers",0)
USER> write $SYSTEM.SQL.Util.GetOption("DelimitedIdentifiers")
0
これにより、「'AAA'」と「"AAA"」はどちらも同様に「AAA」という文字列を示すことになり、
上記①・②のSQLは、どちらも、同義に解釈されます。