选择Where Like正则表达式

时间:2016-01-13 14:10:56

标签: sql regex postgresql

我需要创建一个SQL查询。 此查询需要从列中包含正则表达式的表中进行选择。

例如,我有这些值:

TABLE测试(名称)

  • XHRTCNW
  • DHRTRRR
  • XHRTCOP
  • CPHCTPC
  • CDDHRTF
  • PEOFOFD

我想选择所有拥有" HRT"在1个字符之后(值1,2和3 - 看起来像#34; -HRT ---"的值)但不是那些可能有" HRT"在1个字符(值5)之后。

所以我不确定怎么做,因为一个简单的

SELECT * 
FROM test 
WHERE name LIKE "%HRT%"

将返回值1,2,3和5.

很抱歉,如果我对我想要/不需要的东西不太清楚。

3 个答案:

答案 0 :(得分:2)

您也可以更改模式。您可以使用%,而不是使用_,这意味着零或更多的任何内容。

SELECT * FROM test WHERE name like '_HRT%';

答案 1 :(得分:1)

您可以使用substring

SELECT * FROM test WHERE substring(name from 2 for 3) = 'HRT'

答案 2 :(得分:0)

名字总是7个字母吗?做:

SELECT substring (2, 4, field) from sometable

那将只选择第2-4个字符,然后你就可以使用"%HRT"