postgresql 查找字符串列中的非整数值

nx7onnlm  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(2)|浏览(286)

如何选择在特定列中具有非整数值的记录?
我试着像:

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

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

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

ffdz8vbo1#

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

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

请注意反斜杠的双转义和否定字符类的使用。
这是一把小提琴。

34gzjxbg

34gzjxbg2#

Postgres使用 signedinteger,我们需要允许一个可选的前导减号或加号(+-)。无效作为整数文字:

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

请注意,允许并修剪前导和尾随空格,但不允许嵌套空格。
fiddle
老小提琴

相关问题