您如何识别文本中的一组 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的主要内容,如果未能解决你的问题,请参考以下文章

您能否帮助我了解如何使用 +- 运算符找到从 1 到 N 的一组给定数字的所有可能组合 [重复]

如何让计算机在 Swift 中生成预定义的一组数字?

使用 numpy/scipy 识别数字信号的斜率变化?

如何将文本框宽度与网格中的一组列相匹配?

名片解析器。如何从名片识别文本中提取相关信息?

怎样解决系统导出的excel表中18位数字后3位自动变为0的问题