SQL WHERE filter

  • 本文关键字:filter WHERE SQL sql
  • 更新时间 :
  • 英文 :


我很难解释这个问题,但我希望有人能理解。

如果某个列只满足整个值中的一个标准,我该如何从该列中筛选出它?

所以在这个例子中,我想过滤掉任何包含"0"的值;第一次触摸";,即使该值还有其他SpecialNeedsTagNames。例如";第一次接触,不接触,自助飞行员">等。

SELECT count(*) AS count
FROM
(select *
from OperationalReporting.VW_Delivery
WHERE DeliveryCountry in ('NO',
'FI',
'DK',
'SE',
'IS')) AS expr_qry
WHERE "CountryOfUse" = 'Sweden'
AND "OrderStatus" IN ('Booked',
'Order Placed')
AND "IsDelivered" = 'false'
AND "Model" NOT IN ('Model QW',
'Model PX',
'Model ZY')
AND ((SalesAdvisorHomeStore like 'EU-SE%'
OR CommisionabaleStore like 'EU-SE%')
AND (SpecialNeedsTagName is null
or (SpecialNeedsTagName not like '%First Touch%')))
ORDER BY count DESC
LIMIT 50000;

目前它只过滤掉only具有"0"的值;第一次触摸";,只要它有一个组合值,它仍然在列中输出。错误值

因此,首先,您可能希望通过给定UPPER或LOWER来统一列中的所有值。where语句如下所示:

WHERE UPPER(SpecialNeedsTagName) LIKE 'FIRST TOUCH%'

如果要确保不存在null,请添加AND IS NOT NULL。这将返回以第一次触摸开始的所有结果。如果您预计这个短语可能出现在字符串的中间,请在开头添加%('%FIRST TOUCH%'(

试试这个:

SELECT count(*) AS count
FROM
(select *
from XX.XX_XX
WHERE NOT EXISTS (select * from XX.XX_XX where UPPER(SpecialNeedsTagName) 
LIKE '%First Touch%'))
ORDER BY count DESC
LIMIT 50000;

最新更新