您如何识别文本中的一组 2 或 3 位数字? postgresql
Posted
技术标签:
【中文标题】您如何识别文本中的一组 2 或 3 位数字? postgresql【英文标题】:How do you identify a set of 2 or 3 digits within text? postgresSQL 【发布时间】:2020-12-09 20:28:11 【问题描述】:我想查找“描述”中有 2 位或 3 位数字的实例。
桌子是这样的
id | description
--- ------------
1 | This is 40cm long.
2 | The dog is black.
我认为这应该是一个简单的查询,如果有任何帮助,将不胜感激。
我试过了
SELECT id, description
FROM table
WHERE description LIKE '%[0-9]%' or description LIKE '%[0-9][0-9]%'
虽然我认为它应该返回,但它没有返回任何结果
id | description
--- ------------
1 | This is 40cm long.
谢谢
【问题讨论】:
LIKE
不支持 SQL 中的正则表达式
【参考方案1】:
您将 LIKE 与正则表达式混淆了。您可以使用正则表达式路线,或查看 SQL 标准 SIMILAR TO:
WHERE description SIMILAR TO '%[0-9]2,3%'
应该为您提供 2 位或 3 位数字的描述
来源:https://www.postgresql.org/docs/current/functions-matching.html
【讨论】:
【参考方案2】:在 Postgres 中,使用正则表达式。这匹配 1 个或两个数字(如代码中所示):
WHERE description ~ '[0-9]1,2'
这匹配 2 或 3(如描述):
WHERE description ~ '[0-9]2,3'
【讨论】:
以上是关于您如何识别文本中的一组 2 或 3 位数字? postgresql的主要内容,如果未能解决你的问题,请参考以下文章