Postgres正则表达式^开始于和$结束

时间:2017-10-27 15:42:03

标签: sql regex postgresql

新手问题。我正在寻找以字母“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

1 个答案:

答案 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无关。