如何选择特定列中具有非整数值的记录?
我尝试过:
SELECT * FROM tableName WHERE status !~ '^\d+?\$'
Run Code Online (Sandbox Code Playgroud)
我想找到所有不存储精确整数表示的记录。
Column | Type | Modifiers
------------+-----------------------+-----------
status | charecter varying(25) |
Run Code Online (Sandbox Code Playgroud)
由于您正在寻找非整数值,因此如果状态包含任何非数字的内容(即字母、小数点等),则它不是整数,因此此正则表达式应该有效:
select * from foo where status ~ E'[^\\d]'
Run Code Online (Sandbox Code Playgroud)
请注意反斜杠的双转义以及否定字符类的使用。
这是一个sqlfiddle。
Postgres 使用signed integer
,我们需要允许一个可选的前导减号或加号( +-
)。
作为整数文字无效:
SELECT * FROM tbl WHERE status !~ '^[+-]*\d+$'
Run Code Online (Sandbox Code Playgroud)
请注意,前导和尾随空白是可以容忍和修剪的,但嵌套空白不是。