新手问题。我正在寻找以字母“R' R' 这有效:
SELECT *
FROM table
WHERE column LIKE 'R%'
这不是
SELECT *
FROM table
WHERE column LIKE '^R%'
为什么?
同样好奇,如果我希望它以R
结尾,我使用$?
'%R$'
这里没有很好地解释模式匹配。如果您知道其他资源,请分享。谢谢 https://www.postgresql.org/docs/9.3/static/functions-matching.html
答案 0 :(得分:5)
手册非常清晰LIKE
,正则表达式是不同的。
<强> LIKE 强>
根据手册:
如果字符串与提供的模式匹配,则LIKE表达式返回 true 。 (正如预期的那样,如果LIKE返回true,则NOT LIKE表达式返回 false ,反之亦然。等效表达式为NOT(字符串LIKE模式)。)
因此,LIKE在匹配字符串时返回true或false。
%
类似于filesearch中的*
,这意味着它将匹配零或任何之后或之前。
R%
R和之后的任何角色。%R
任何字符和R LIKE
使用的是=
代替-- Gets zero or any characters before one R
SELECT * FROM table WHERE column LIKE '%R'
-- Gets zero or any characters after one R
SELECT * FROM table WHERE column LIKE 'R%'
,手册中解释了更多功能。
LIKE
<强> ILIKE 强>
ILIKE
区分大小写,为了使其不区分大小写,您可以使用=
常规表现
在postgreSQL中,对于正则表达式匹配,不使用~
而是使用-- Gets zero or any spaces numbers and text characters before one R
SELECT * FROM table WHERE column ~ '^[\s\w]*[R]{1}$'
-- Gets zero or any spaces numbers and text characters after one R
SELECT * FROM table WHERE column ~ '^[R]{1}[\s\w]*$'
,正则表达式格式相应于POSIX regular expressions标准
一个例子是:
www:
autoredeploy: true
deployment_strategy: high_availability
image: 'crowdhailer/www:0.1.0'
ports:
- '8080'
target_num_containers: 5
在手册中有正则表达式的所有可用运算符的说明。如何使用正则表达式是另一回事,它符合POSIX regular expressions标准;这与PostgreSQL无关。