0

如何使用“LIKE”查找字符串中包含例如“R011”、“R012”、“R021”、“R022”的行?我不想选择“R01”或“R02”。

SELECT 'Code'
FROM "public"."Test"
WHERE 'Code' LIKE 'R01%';

在“代码”列中名为“测试”的表中,我使用了上面的查询,但结果是:

no rows found.

行如下所示:

R(01-04,11)  Personnel professionnel des
R01  M้decins, dentistes et v้t้r.
R011 M้decins sp้cialistes
R022 Omnipraticiens et m้decins en m้decine
4

2 回答 2

2
SELECT *
FROM   public."Test"
WHERE  "Code" LIKE 'R0__';

这需要 2 个字符后'R0'

您使用单引号没有意义。首先阅读手册中的标识符和关键词。我的建议:根本不要使用大小写混合的标识符。
然后继续阅读有关模式匹配的信息。

更具体地说,您可以使用正则表达式,例如:

WHERE  "Code" ~ '^R0\d\d$';  -- allowing any 2 digits

甚至:

WHERE  "Code" ~ '^R0[12]{2}$';  -- allowing only 1 and 2
于 2013-07-19T00:03:50.170 回答
0

您想使用下划线而不是百分比字符。下划线_匹配单个字符,而百分比%匹配零个或多个字符。

select 'R011' like 'R01_'
# true

select 'R01' like 'R01_'
# false

或者更好的是,您可以使用正则表达式来匹配十进制字符。

select 'R011' ~ 'R\\d{3}'

http://www.postgresql.org/docs/9.2/static/functions-matching.html

于 2013-07-18T22:55:48.997 回答