仅返回包含数据

时间:2018-02-20 02:52:42

标签: sql postgresql

在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'

的行

使用我的上述查询,它返回的空白行也没有数据。

1 个答案:

答案 0 :(得分:2)

您可以有条件地转换为数字:

where (case when t1.item_number ~ '^[0-9]+$'
            then t1.item_number::integer
       end) > 0 and
      t1.item_name = 'Item10';