在PostgreSQL中,我有一个表格,其中类型字符的列不同,我存储了一些数字。如何检查列是否保持大于零的值(>0
)。
表(表1):
ID Item_Number Item_Name
10 10909 Item10
11 12344 Item10
12 EN-890 Item89
13 1234 Item90
14 Item10
15 Item10
16 893 Item10
17 780 Item10
18 12,13,15 Item10
19 12312 Item12
从上表中,ID的类型为整数,ItemNumber的类型为字符变化,ItemName的类型为字符变化。我想选择并显示ItemNumber大于零且ItemName等于Item10的所有数据。
以下是我使用的查询:
SELECT Item_Number AS itemNumber,
Item_Name AS itemName
FROM table1 t1
WHERE t1.item_number::integer > 0
AND t1.item_name='Item10';
如何仅显示包含item_number>0 and item_name ='Item10'
使用我的上述查询,它返回的空白行也没有数据。
答案 0 :(得分:2)
您可以有条件地转换为数字:
where (case when t1.item_number ~ '^[0-9]+$'
then t1.item_number::integer
end) > 0 and
t1.item_name = 'Item10';