仅返回包含数据的行
Posted
技术标签:
【中文标题】仅返回包含数据的行【英文标题】:Return the rows with data only 【发布时间】:2018-02-20 02:52:41 【问题描述】:在 PostgreSQL 中,我有一个表,其中包含不同类型的字符列,其中存储了一些数字。如何检查列是否包含大于零的值 (>0
)。
表(table1):
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'
的行
使用我上面的查询,它也返回没有数据的空白行。
【问题讨论】:
EN-890
是>0
还是<0
?
我不应该考虑那些,我只需要检查 Item_name = 'Item10' 并且 Item10 的 item_number 应该大于零..@Ilya Bursov
还添加第三个条件为 AND t1.item_number IS NOT NULL
【参考方案1】:
您可以有条件地转换为数字:
where (case when t1.item_number ~ '^[0-9]+$'
then t1.item_number::integer
end) > 0 and
t1.item_name = 'Item10';
【讨论】:
以上是关于仅返回包含数据的行的主要内容,如果未能解决你的问题,请参考以下文章