【发布时间】:2014-09-15 21:05:10
【问题描述】:
对于我的问题中缺少信息,我深表歉意。我正在使用 MS SQL。我正在文本字段中查找 3 个特定项目; IH-、MPC 或 ICC。如果在文本字段中找到这些项目中的任何一个,我想表明它们已被找到。如果在第一行中找到了所有三个,则会有一个包含 IH-、MPC、ICC 的字段 这是我的查询;
SELECT tt.TITLE, tt.ITEM_REFERENCE_ID, tt.VERSION, PATH_MAPPINGS.PATH, tt.CONTENT
FROM ITEM_REFERENCES INNER JOIN
PATH_MAPPINGS ON ITEM_REFERENCES.ORGANIZATIONAL_ITEM_ID = PATH_MAPPINGS.ORGANIZATIONAL_ITEM_ID INNER
JOIN
ITEMS AS tt INNER JOIN
(SELECT ITEM_REFERENCE_ID, MAX(VERSION) AS MaxVersion
FROM ITEMS
GROUP BY ITEM_REFERENCE_ID) AS groupedtt ON tt.ITEM_REFERENCE_ID = groupedtt.ITEM_REFERENCE_ID AND tt.VERSION = groupedtt.MaxVersion ON
ITEM_REFERENCES.ID = tt.ITEM_REFERENCE_ID
WHERE (tt.CONTENT LIKE '%<text>AP[0-2]%' )
or
(tt.CONTENT LIKE '%<text>IH-[0-2]%' )
or
(tt.CONTENT LIKE '%<text>MPC[0-2]%' )
or
(tt.CONTENT LIKE '%<text>ICC[0-2]%' )
【问题讨论】:
-
在我看来,这应该是脚本化的。 MySQL 根本无法自行动态添加列。您可以遍历所有列
IF(title LIKE ..., 1, 0) AS matched_on_title, etc.. -
为什么需要这个,不就是把所有的选项都加进去,然后在你的脚本里做个布尔比较吗?
标签: sql-server select text sql-like