仅返回包含数据的行

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

【讨论】:

以上是关于仅返回包含数据的行的主要内容,如果未能解决你的问题,请参考以下文章

MySQL返回列包含任何但仅包含一组关键字的所有行

选择所有子项仅包含相同值且没有其他方案的行

从数据框的行中删除仅包含数字的字符串

Python,Pandas:只返回那些有缺失值的行

读取数据时出错,错误消息:CSV 表引用列位置 174,但从位置开始的行:136868 仅包含 94 列

SQL返回一个字段包含相同数据但其他字段包含不同数据的行