如何使用LIKE查询在PostgreSQL中找到文字百分比符号(%)?

如何使用LIKE查询在PostgreSQL中找到文字百分比符号(%)?,postgresql,sql-like,Postgresql,Sql Like,我在一个表中有字符变化项,其中一些(不是全部)值包含百分比,例如'12%','97%',等等。我想找到所有包含百分比的值。换句话说,我想找到所有以百分号(“%”)结尾的值。我最后使用了正则表达式: select * from my_table where my_column ~ '%$'; 但是,我仍然想知道是否可以使用like操作符/比较。您可以这样尝试: SELECT * FROM my_table WHERE my_column LIKE '%\%%' ESCAPE '\'; 格式

我在一个表中有
字符变化
项,其中一些(不是全部)值包含百分比,例如
'12%'
'97%'
,等等。我想找到所有包含百分比的值。换句话说,我想找到所有以百分号(
“%”
)结尾的值。

我最后使用了正则表达式:

select * from my_table where my_column ~ '%$';
但是,我仍然想知道是否可以使用
like
操作符/比较。

您可以这样尝试:

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

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

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

 <pattern> ::= <character value expression>

 <escape character> ::= <character value expression>
::=
[不]像
[逃脱]
::= 
::= 
::= 

您必须转义文字%符号。默认情况下,转义字符为反斜杠:

SELECT * FROM my_table  WHERE my_column LIKE '%\%';
在这种情况下,第一个
%
符号与
my\u列中的任何起始序列相匹配。其余的
\%
被解释为文字%字符。因此,组合为:匹配以%字符结尾的任何内容


“要匹配文字下划线或百分号而不匹配其他字符,模式中的相应字符前面必须有转义字符”如果禁用了
标准一致性字符串
选项(可通过
显示标准一致性字符串;
)进行检查,您需要使用双反斜杠:
SELECT*FROM my\u table,其中我的\u列像“%\\%%”ESCAPE“\\”
在这两种情况下(无论
标准\u字符串
),您都可以使用带双反斜杠的转义字符串语法:
从my \u表中选择*,其中my \u列如E“%\\%%”转义E“\\”