我在postgresql版本9.1中有一个带有两个撇号的行单元格值,如下所示:
col1 col2
'' 1
'' 2
aa 3
aa 4
现在我想用''from col1
选择那些行我试过了:
select * from table1 where col1 like '''''%'
但什么都不返回。
select * from table1 where col1 = ''''''
但什么都不返回。
select * from table1 where col1 = $$''''$$
但也没有任何回报。
select * from table1 where col1 like $$''%$$
但也没有任何回报。
有人可以帮忙吗? THX答案 0 :(得分:3)
你还没有解释为什么你的第二次尝试,这是正确的,不适合你。
为了完整起见,以下是解决您所写问题的正确方法 - 我怀疑这可能与您实际遇到的问题有所不同。
如果standard_conforming_strings
打开(较新的PostgreSQL版本):
SELECT * FROM table1 WHERE col1 = '''''';
那里有六个单引号。两个是字符串文字的常用引号。其他四个是一对加倍的单引号,因为你想找到两个单引号的字符串,引号通过加倍来转义。
对于所有模糊的现代PostgreSQL版本和设置,但非标准:
SELECT * FROM table1 WHERE col1 = E'\'\''
这使用了转义字符串语法,对于熟悉C风格字符串的人来说,这种语法更具可读性。
PostgreSQL特定的美元报价:
SELECT * FROM table1 WHERE col1 = $$''$$;
这使用$$
引用样式,这是PostgreSQL扩展。引用$$
后,'
不再是特殊内容,因此您只需编写两个普通的''
字符。当然,您刚刚将问题转移到$$
,这就是您可以写的原因:
SELECT * FROM table1 WHERE col1 = $uniquedelimiter$''$uniquedelimiter$;
其中uniquedelimiter
可以是任何有效的标识符字符串。