bazı (hepsi değil) değerlerinin yüzdeleri, ör. '12%'
, '97%'
vb. Içeren bir tabloda character varying
girişleri var. Yüzdeleri içeren tüm değerleri bulmak istiyorum. Diğer bir deyişle, yüzde işareti ile biten tüm değerleri bulmak istiyorum ('%'
).Bir LIKE sorgusu kullanarak PostgreSQL'de bir yüzde işareti (%) nasıl bulunur?
cevap
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.
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>
" 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 '\\'; ' –
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.
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 * " –