2015-10-08 81 views

cevap

0

ben normal ifadeler kullanarak sona erdi:

select * from my_table where my_column ~ '%$'; 

Ancak, ben yine de LIKE operatör/karşılaştırma kullanılarak mümkün olup olmadığını bilmek istiyorum.

+1

http://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-LIKE "* diğer karakterler eşleşen ilgili olmayan bir edebi çizgi veya yüzde işareti eşleştirmek için desendeki karakterin önüne çıkış karakteri gelmelidir * " –

5

Böyle deneyebilirsiniz:

SELECT * FROM my_table WHERE my_column LIKE '%\%%' ESCAPE '\'; 

Biçim

<like predicate> ::= 
     <match value> [ NOT ] LIKE <pattern> 
     [ ESCAPE <escape character> ] 

<match value> ::= <character value expression> 

<pattern> ::= <character value expression> 

<escape character> ::= <character value expression> 
+0

" Standard_conforming_strings "seçeneğiniz kapalıysa ('show standard_conforming_strings;' ile kontrol edilebilir), çift ters eğik çizgi yapmanız gerekir: 'SELECT * my_table WHERE my_column LIKE' % \\ %% 'ESCAPE' \\ '; ' Ve her iki durumda da (standart_conforming_strings'den bağımsız olarak) çift taraflı ters eğik çizgi ile kaçış dizesi sözdizimini kullanabilirsiniz: ' SELECT * FR_ my_table WHERE my_column LIK E E '% \\ %%' ESCAPE E '\\'; ' –

3

Sen literal% işaretini kaçmak zorunda. İlk % işareti my_column herhangi başlangıç ​​dizisine eşleşir Bu durumda

SELECT * FROM my_table WHERE my_column LIKE '%\%'; 

: Varsayılan olarak kaçış karakteri ters eğik çizgi olduğunu. Kalan \%, bir harfli% karakter olarak yorumlanır. Bu nedenle kombinasyon:% karakterde biten her şeyi eşleştirin.

SQLFiddle