2010-11-05
PostgreSQLでエスケープ文字を利用する場合の注意
以下の例のように「nonstandard use of \\ in a string literal」とかログに出ててビビッた。
SELECT position ( 'C:\\\\aaa/bbb/sample.txt' in '\\\\' ) FROM hoge message: nonstandard use of \\ in a string literal
下記、引用の通り、エスケープ文字を利用している場合は、「直前にE」と付与することで問題なくなるようです。
PostgreSQLでは、また、"エスケープ"文字定数を受け付けます。これは標準SQLの拡張です。エスケープ文字定数は、開始単一引用符の直前にE(大文字でも小文字でもかまいません)を記述することで指定されます。例えばE'foo'です。
語彙の構成
上記の例を修正する場合は、以下のように修正します。
'C:\\\\aaa/bbb/sample.txt' in '\\\\' ↓ E'C:\\\\aaa/bbb/sample.txt' in E'\\\\'
但し、製品などの場合、自分で修正することが難しいかもしれません。その場合は、下記のように設定ファイルを修正する方法もあります。*1
escape_string_warning = on ↓ escape_string_warning = off
トラックバック - http://d.hatena.ne.jp/takami_hiroki/20101105/p1
リンク元
- 1 http://b.hatena.ne.jp/t/postgreSQL?sort=eid&of=25
- 1 http://d.hatena.ne.jp/
- 1 http://d.hatena.ne.jp/shiumachi/20101104/1288874076
- 1 http://pipes.yahoo.com/pipes/pipe.info?_id=vpw6npu13rgko15vbrnmsa
- 1 http://search.yahoo.co.jp/search?p=%user+++++%nice+++%system+++%iowait++++%steal+++++%idle&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&x=wrt
- 1 http://webcache.googleusercontent.com/search?q=cache:ZXhUVnMnuQ0J:d.hatena.ne.jp/takami_hiroki/20101014/p1+Slony-I 性能&cd=7&hl=ja&ct=clnk&gl=jp&client=firefox-a
- 1 http://www.google.co.jp/search?as_q=truncate+遅い&hl=ja&tbs=lr:lang_1ja&num=10&btnG=Google+検索&as_epq=&as_oq=&as_eq=&lr=lang_ja&cr=&as_ft=i&as_filetype=&as_qdr=m&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images
- 1 http://www.google.co.jp/search?hl=ja&client=firefox-a&hs=Jgd&rls=org.mozilla:ja:official&q=apache+proxytimeout+&aq=f&aqi=&aql=&oq=&gs_rfai=
- 1 http://www.google.co.jp/search?hl=ja&client=opera&hs=2he&rls=ja&q=steal+iowait&aq=f&aqi=&aql=&oq=&gs_rfai=
- 1 http://www.google.co.jp/search?hl=ja&lr=&ei=7abTTJnSGYKivgP_1bCZBQ&q=linux+grep 前後&start=10&sa=N