我运行一个select语句,使用WHERE
条件从注释字段中选择记录中的单词。
我希望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%'))
答案 0 :(得分: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%'
)
)