[Oracle][SQL]文字リテラルで’を使用する場合
シングルクォーテーションがクセモノな’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&')
アンパサンドにすると、置換を求められた。