如何使用where条件获取包含数字和字符串的表结果

时间:2019-07-11 06:36:12

标签: sql postgresql postgresql-9.5

我有一个如下表

enter image description here

如果我从上表中选择item_no>'1623'

我想在下面打印结果

1666
1674
1912
1952
1953

我正在尝试使用命令

select * from table where item_no>'1623'

但是它给出了错误的结果

2 个答案:

答案 0 :(得分:1)

只需尝试将item_no转换为整数(我想它是非数字的)。

with tab(numbers) as
(
 select nullif(left(item_no, strpos(item_no, '_') - 1),'')::integer from "table"    
)    
select numbers
  from tab
 where numbers > 1623     

(在未看到图片的情况下,考虑到注释所有数据均以非数字字符结尾),所有数据均由数字组成,直至最后一个字符。

或者,尝试仅将数字提取为:

with tab(numbers) as
(
 select nullif(regexp_replace(col, '\D','','g'),'')::integer from "table"    
)    
select numbers
  from tab
 where numbers > 1623

Demo

答案 1 :(得分:1)

使用SUBSTRING

select * from t where substring(item_no,'([0-9]+)') :: int  > 1623

DEMO