文字リテラルで'を使用する場合

Tags: [ Oracle ] [ SQL ] Published: 2009/10/31

 シングルクォーテーションがクセモノな'Y's II' をきちんと挿入・表示させる。

シングルクォーテーションを重ねる

insert into sample values(2, 'Y''s II')

 まず基本。シングルクォーテーションを重ねればOK。

代替引用符を使用する

 もしくは、Oracle 10gからサポートされた代替引用符(q or Q)で、任意の文字を引用符として使用する。

insert into sample values(3, q'aY's IIa')
insert into sample values(3, q'%Y's II%')

 上はaで挟がった中がリテラルになり、下は%で挟がった中がリテラルになる。ちなみに任意の文字と指定文字が重なってしまった場合でも、

insert into sample values(3, q'sY's IIs')

 問題ない。頭とおしりできちんと見とるんかな。

091117追記

 どうやら、

insert into sample values(3, q'[Y's II]')
insert into sample values(3, q'(Y's II)')

 こういう表記も良いらしい。(というか、こっちが主流?)文字や記号だと同じもので挟まないといけないのに、かっこは開きと閉じで対応させる様子。また、

insert into sample values(3, q'YY's IIY')

 これはダメだった。多分イースのイーの部分(Y')が終わりと見なされているから? 記号系では、

insert into sample values(3, q'&Y's II&')

 アンパサンドにすると、置換を求められた。


Author: kk_Ataka / Powered by Jekyll on GitHub Pages