从Postgresql中选择撇号

时间:2013-06-16 06:10:16

标签: sql postgresql

我在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

1 个答案:

答案 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可以是任何有效的标识符字符串。