如何选择特定列中具有非整数值的记录?
我试过了:
SELECT * FROM tableName WHERE status !~ '^\d+?\$'
我想找到所有不存储精确整数表示的记录。
Column | Type | Modifiers
------------+-----------------------+-----------
status | charecter varying(25) |
答案 0 :(得分:2)
由于您正在寻找非整数值,如果状态包含任何不是数字(即字母,小数点等)的内容,则它不是整数,所以这个正则表达式应该有效:
select * from foo where status ~ E'[^\\d]'
注意反斜杠的双重转义和使用否定的字符类。
这里是sqlfiddle。
答案 1 :(得分:1)
Postgres使用签名 integer
,因此您需要允许可能的前导减号或加号(+-
)。 不整数:
SELECT * FROM tbl WHERE status !~ '^[+-]*\d+?$'