如何识别文本中的一组 2 位或 3 位数字? postgresQL

How do you identify a set of 2 or 3 digits within text? postgresSQL

我想查找“描述”中有 2 位或 3 位数字的实例。

table就像

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]%'

虽然我认为应该 return

但 return 没有结果
id | description 
--- ------------
 1 | This is 40cm long. 

谢谢

在 Postgres 中,使用正则表达式。这匹配 1 个或两个数字(如代码中所示):

WHERE description ~ '[0-9]{1,2}' 

这匹配 2 或 3(如描述中所示):

WHERE description ~ '[0-9]{2,3}' 

您将 LIKE 与正则表达式混淆了。您可以使用正则表达式路由,或者查看 SQL 标准 SIMILAR TO:

WHERE description SIMILAR TO '%[0-9]{2,3}%'

应该为您提供 2 位或 3 位数字的描述

来源:https://www.postgresql.org/docs/current/functions-matching.html