排除具有特定值的记录' *' SQL SELECT

时间:2017-06-15 04:16:47

标签: sql postgresql

我正准备迁移到基于股票的零售商店的新数据库系统。在当前数据库中,已停用的产品已将前导*添加到记录中。

业主不希望将停用的产品带入新系统,因此这个领先的*是我唯一的工作参考点。

我需要创建一个SELECT查询,该查询将排除具有前导*但无效的产品。

我试过以下

SELECT prdcod
FROM prdtbl
WHERE prodcod<>'*%';

返回的前10个结果是:

  1. 71A022
  2. 051116
  3. 070505PRO
  4. * 031620
  5. 458508
  6. 501315
  7. * 070247PE
  8. 370002
  9. 070278STU
  10. * CO20302
  11. 我怀疑我可能无法使用*作为排除因子

    任何想法都会被激活

4 个答案:

答案 0 :(得分:1)

试试这个

 SELECT prdcod
    FROM prdtbl
    WHERE prodcod not like '*%';

答案 1 :(得分:1)

这可以通过很多方式实现。

使用NOT LIKE

SELECT prdcod
FROM prdtbl
WHERE prodcod NOT LIKE '*%'

使用LEFT/SUBSTRING

SELECT prdcod
FROM prdtbl
WHERE LEFT(prodcod,1) <> '*' -- SUBSTRING(prodcod from 1 for 1) <> '*'

注意: Not Like是首选方法,如果Index列上有prodcod

答案 2 :(得分:1)

SELECT prdcod
FROM prdtbl
WHERE prodcod NOT LIKE '*%';

答案 3 :(得分:1)

而不是使用&#34;&lt;&gt;&#34;操作员,使用&#34;不喜欢&#34;:

Select prdcod
From prdtbl
Where prodcod not like '*%';