Postgresql:以“IR”开头的值的模式匹配
Posted
技术标签:
【中文标题】Postgresql:以“IR”开头的值的模式匹配【英文标题】:Postgresql : Pattern matching of values starting with "IR" 【发布时间】:2015-06-10 05:59:13 【问题描述】:如果我的表格内容看起来像这样:
id | value
------------
1 |CT 6510
2 |IR 52
3 |IRAB
4 |IR AB
5 |IR52
我只需要获取内容以“IR”开头然后是数字的那些行(忽略空格)。这意味着我应该得到这些值:
2 |IR 52
5 |IR52
因为它以“IR”开头,而下一个非空格字符是整数。与 IRAB 不同,它也以“IR”开头,但“A”是下一个字符。我只能查询以 IR 开头的所有内容。但其他 IR 也出现了。
select * from public.record where value ilike 'ir%'
我该怎么做?谢谢。
【问题讨论】:
你应该使用正则表达式。 【参考方案1】:您可以使用运算符~
,它执行正则表达式匹配。
例如:
SELECT * from public.record where value ~ '^IR ?\d';
添加星号以执行不区分大小写的匹配。
SELECT * from public.record where value ~* '^ir ?\d';
符号表示:
^
:字符串的开头
?
: 前面的字符(这里是空格)是可选的
\d
:全数字,相当于[0-9]
查看更多信息:Regular Expression Match Operators
另见这个问题,非常有用:difference-between-like-and-in-postgres
【讨论】:
谢谢你的解释,给了我一个如何做正则表达式的快速入门。以上是关于Postgresql:以“IR”开头的值的模式匹配的主要内容,如果未能解决你的问题,请参考以下文章