在字符串列中查找非整数值

时间:2014-11-21 06:06:20

标签: regex postgresql

如何选择特定列中具有非整数值的记录?

我试过了:

SELECT * FROM tableName WHERE status !~ '^\d+?\$'

我想找到所有不存储精确整数表示的记录。

  Column   |         Type           | Modifiers 
------------+-----------------------+-----------
 status    | charecter varying(25)  |

2 个答案:

答案 0 :(得分:2)

由于您正在寻找非整数值,如果状态包含任何不是数字(即字母,小数点等)的内容,则它不是整数,所以这个正则表达式应该有效:

select * from foo where status ~ E'[^\\d]'

注意反斜杠的双重转义和使用否定的字符类。

这里是sqlfiddle

答案 1 :(得分:1)

Postgres使用签名 integer,因此您需要允许可能的前导减号或加号(+-)。 整数:

SELECT * FROM tbl WHERE status !~ '^[+-]*\d+?$'

SQL Fiddle.