0

WHERE我运行一个 select 语句,它使用条件 从注释字段的记录中挑选单词。

我想要 SQL 中的一个字段来告诉我它在 note 字段中找到了哪个单词。
我怎样才能做到这一点?

这是当您在原始 SELECT 语句上使用 UPDATE 时,还是有办法通过一次传递来做到这一点?很抱歉问这样一个新手问题,但我是 Oracle 的新手。

SELECT ZOOANIMALS.MOPID,
       ZOOANIMALS.MOPSERVICEIMPACTED "TYPE",
       '          ' AS FOUND_THIS,
       ZOONOTES.MOPNOTE
FROM MOPUSER.ZOOANIMALS
INNER JOIN MOPUSER.ZOONOTES ON ZOOANIMALS.MOPID=ZOONOTES.MOPID
WHERE ZOOANIMALS.mopstart BETWEEN sysdate AND (sysdate+14)
  AND UPPER(ZOOANIMALS.MOPSTATUS) != 'COMPLETE'
  AND UPPER(ZOOANIMALS.MOPSTATUS) != 'CANCELLED'
  AND (ZOOANIMALS.MOPSERVICEIMPACTED LIKE '%FTTT%'
       OR (UPPER(ZOONOTES.MOPNOTE) LIKE ''%AARDVARK%'
           OR UPPER(ZOONOTES.MOPNOTE) LIKE '%ZEBRA%'))
4

1 回答 1

2

您可以在 SELECT 子句中使用 CASE 语句来测试它是哪种情况。

SELECT ZOOANIMALS.MOPID,
ZOOANIMALS.MOPSERVICEIMPACTED "TYPE",
'          ' as FOUND_THIS,
    ZOONOTES.MOPNOTE,
CASE WHEN ZOONOTES.MOPNOTE LIKE '%FTTT%' THEN 'FTTT WAS TRIGGERED' else '' end,
CASE WHEN UPPER(ZOONOTES.MOPNOTE) LIKE '%AARDVARK%' THEN 'AARDVARK WAS TRIGGERED' else '' end,
CASE WHEN UPPER(ZOONOTES.MOPNOTE) LIKE '%ZEBRA%' THEN 'ZEBRA WAS TRIGGERED' else '' end

FROM MOPUSER.ZOOANIMALS INNER JOIN MOPUSER.ZOONOTES ON ZOOANIMALS.MOPID=ZOONOTES.MOPID
WHERE ZOOANIMALS.mopstart between sysdate and (sysdate+14)
AND UPPER(ZOOANIMALS.MOPSTATUS) != 'COMPLETE'
AND UPPER(ZOOANIMALS.MOPSTATUS) != 'CANCELLED'
AND
(
ZOOANIMALS.MOPSERVICEIMPACTED LIKE '%FTTT%'
    OR
    (
    UPPER(ZOONOTES.MOPNOTE) LIKE ''%AARDVARK%'
    OR UPPER(ZOONOTES.MOPNOTE) LIKE '%ZEBRA%'
 )
 )
于 2013-06-07T15:35:59.643 回答