如何使用“LIKE”查找其字符串中包含例如“R011”,“R012”,“R021”,“R022”的行?我不希望选择“R01”或“R02”。< / p>
SELECT 'Code'
FROM "public"."Test"
WHERE 'Code' LIKE 'R01%';
在“Code”列中名为“Test”的表中我使用了Above查询但结果是:
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
答案 0 :(得分:2)
SELECT *
FROM public."Test"
WHERE "Code" LIKE 'R0__';
'R0'
之后需要2个字符。
使用单引号毫无意义。首先阅读identifiers and key words in the manual。我的建议:根本不要使用大小写混合标识符 然后继续information about pattern matching。
更具体地说,您可以使用正则表达式,如:
WHERE "Code" ~ '^R0\d\d$'; -- allowing any 2 digits
甚至:
WHERE "Code" ~ '^R0[12]{2}$'; -- allowing only 1 and 2
答案 1 :(得分: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