Paradigm Shift Design

ISHITOYA Kentaro's blog.

nonstandard use of \\ in a string literal

Postgresのエラー.
初めて知ったのでメモ.文字列リテラルの中で

INSERT INTO video (id, title) VALUES (1, 'C:\\hogehoge.flv');

の様にバックスラッシュを使う場合,

nonstandard use of \\ in a string literal

というエラーが出る.これを解決するにはヒントにしたがって

INSERT INTO video (id, title) VALUES (1, E'C:\\hogehoge.flv');

の様にすればいい.


マニュアルには,

PostgreSQLでは、また、"エスケープ"文字定数をを(原文ママ)受け付けます。これは標準SQLの拡張です。エスケープ文字定数は、開始単一引用符の直前にE(大文字でも小文字でもかまいません)を記述することで指定されます。例えばE'foo'です。(複数行に渡るエスケープ文字定数では、最初の開始引用符の前にのみEを記述してください。)エスケープ文字列の中では、バックスラッシュ文字(\)によりC言語のようなバックスラッシュシーケンスが始まります。

より引用.


とかかれていました.元々,文字列定数にはエスケープ文字を書けないのか.