如何从postgresql中的列中删除字母数字行?

时间:2018-06-06 09:59:50

标签: sql postgresql

假设我的列名是“psdi”,我想只打印数字行

psdi
100
10k
103f
456
9o2u
125
931

必需的O / P:

psdi
100
456
125

2 个答案:

答案 0 :(得分:0)

这是两个简单的方法。一个人寻找信件:

select t.*
from t
where not psdi ~ '[a-zA-Z]'

或只是数字:

select t.*
from t
where not psdi ~ '^[0-9]+$'

答案 1 :(得分:0)

在where子句

中使用模式匹配

'^-?([0-9]+\.?[0-9]*|\.[0-9]+)$' - 选择所有类型的值(正值,负值和浮点值)

select *
from (
    values ('100T')
          ,('456.5')
          ,('-65')
          ,('9879t')
          ,('454')
    ) t(a)
where a ~ '^-?([0-9]+\.?[0-9]*|\.[0-9]+)$'

demo

您的查询将是

select psdi
from your_table
where psdi ~ '^-?([0-9]+\.?[0-9]*|\.[0-9]+)$'