2

私の SQL では、LIKE コマンドを使用して検索する項目を探しています。データの各行で見つかった LIKE を特定する方法はありますか?

SELECT DISTINCT VICSEC.VSID, VICSEC.VSDESCRIPTION
FROM VSUSER.VICSEC INNER JOIN VSUSER.VSNOTES ON VICSEC.VSID=VSNOTES.VSID
WHERE VICSEC.VSSHIPDATE between sysdate and (sysdate+14)
AND(UPPER(VICSEC.VSDESCRIPTION) LIKE '%***GARTER***%'
OR UPPER(VICSEC.VSDESCRIPTION) LIKE '%DEMIBRA%'
OR UPPER(VICSEC.VSDESCRIPTION) LIKE '%PANTY%'
OR UPPER(VICSEC.VSDESCRIPTION) LIKE '%PAJAMA%'
OR UPPER(VICNOTES.VSNOTE) LIKE '%***GARTER***%'
OR UPPER(VICNOTES.VSNOTE) LIKE '%DEMIBRA%'
OR UPPER(VICNOTES.VSNOTE) LIKE '%PANTY%'
OR UPPER(VICNOTES.VSNOTE) LIKE '%PAJAMA%'
OR UPPER(VICSEC.VSSTORITEM) LIKE '%***GARTER***%'
OR UPPER(VICSEC.VSSTORITEM) LIKE '%DEMIBRA%'
OR UPPER(VICSEC.VSSTORITEM) LIKE '%PANTY%'
OR UPPER(VICSEC.VSSTORITEM) LIKE '%PAJAMA%')
ORDER BY VICSEC.VSID
4

1 に答える 1

4

CASE WHENこれには次の式を使用できます。

SELECT 
  CASE WHEN UPPER(VICSEC.VSDESCRIPTION) LIKE '%***GARTER***%' THEN 1 else 0 END as GARTER,
  CASE WHEN UPPER(VICSEC.VSDESCRIPTION) LIKE '%DEMIBRA%' THEN 1 else 0 END as DEMIBRA,

等...

それらのいずれかが見つかったものを探している場合は、WHEN 句で複数の式を使用できます。これは、式を引数として取るだけだからです。

CASE WHEN UPPER(VICSEC.VSDESCRIPTION) LIKE '%DEMIBRA%' 
          OR UPPER(VICNOTES.VSNOTE) LIKE '%DEMIBRA%'  
     THEN 1 else 0 END as DEMIBRA,
于 2013-10-18T17:28:55.613 に答える