试图在表中插入一个转义字符会导致警告。
比如说:
create table EscapeTest (text varchar(50));
insert into EscapeTest (text) values ('This is the first part \n And this is the second');
产生警告:
WARNING: nonstandard use of escape in a string literal
(使用PSQL 8.2)
有谁知道如何解决这个问题?
部分地。文本被插入,但警告仍被生成。
我找到了一个讨论,指出该文本需要在前面加上'E',如是:
insert into EscapeTest (text) values (E'This is the first part \n And this is the second');
这抑制了警告,但文本仍然没有被正确返回。当我按照迈克尔的建议添加额外的斜线时,它就成功了。
就像这样:
insert into EscapeTest (text) values (E'This is the first part \\n And this is the second');
酷。
我还找到了关于E.A.的文件:
http://www.postgresql.org/docs/8.3/interactive/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS
PostgreSQL也接受"escape"字符串常量,这是SQL标准的一个扩展。一个转义字符串常量是通过在开头的单引号之前写字母E(大写或小写)来指定的,例如:E'foo'(当跨行继续一个转义字符串常量时,只在第一个开头的引号之前写E)。在转义字符串中,一个反斜杠字符(\)开始一个类似C语言的反斜杠转义序列,其中反斜杠和后面的字符组合代表一个特殊的字节值。\b是退格符,f是换行符,n是换行符,r是回车符,t是制表符。还支持digits,其中digits代表一个八进制的字节值,和hexdigits,其中hexdigits代表一个十六进制的字节值。(你有责任确保你创建的字节序列是服务器字符集编码中的有效字符)。反斜杠后面的任何其他字符都是按字面意思理解的。因此,要包括一个反斜线字符,请写两个反斜线(\\)。另外,除了正常的''方式外,还可以在转义字符串中包含一个单引号,即写成\'。