2013-06-16 3 views
1

У меня есть значение строки ячейки с двумя кавычками в PostGreSQL версии 9.1 следующим образом:выберите апострофа из Postgresql

col1 col2 
'' 1 
'' 2 
aa 3 
aa 4 

Теперь я хочу, чтобы выбрать те строки с «» из 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

Как насчет '.. где col1 = '''? – user2246674

+0

ОШИБКА: ошибка синтаксиса при или около "=" –

+2

'SELECT * FROM table1 WHERE col1 LIKE $$ ''% $$' работает для меня – mvp

ответ

3

Вы не объяснили, почему ваша вторая попытка, которая была верна, не сработала для вас.

Для полноты, вот правильные способы решения проблемы, о которой вы писали, - что, как я подозреваю, может отличаться от проблемы, с которой вы действительно оказались.

  • если standard_conforming_strings на (более новые версии PostgreSQL):

    SELECT * FROM table1 WHERE col1 = ''''''; 
    

    Есть шесть одинарные кавычки там. Два являются обычными кавычками для строкового литерала. Остальные четыре представляют собой пару удвоенных одинарных кавычек, так как вы хотите найти строки, которые представляют собой две одинарные кавычки, а кавычки ускользают, удваивая их.

  • Для всех туманно современных версий PostgreSQL и настроек, но нестандартности:

    SELECT * FROM table1 WHERE col1 = E'\'\'' 
    

    Это использует побег-струнной синтаксис, который является гораздо более удобным для чтения для людей, знакомых со строками в стиле С.

  • PostgreSQL конкретного доллар процитировать:

    SELECT * FROM table1 WHERE col1 = $$''$$; 
    

    Это использует $$ квотирование стиль, который является расширением PostgreSQL. С $$ цитирование, ' больше не является чем-то особенным, поэтому вы просто пишете два обычных символа ''. Конечно, вы только что переехали вашу проблему в $$, поэтому вы можете написать:

    SELECT * FROM table1 WHERE col1 = $uniquedelimiter$''$uniquedelimiter$; 
    

    где uniquedelimiter может быть любой допустимый идентификатор строки.

Смежные вопросы