我有一个表有20个不同的列,其中4个用于存储图像名称。
e.g。
img01 = abcdef_X
img02 = jklmno
img03 = tuvxys_X
img04 = awstyt_X
我可以使用sql查询来返回包含'_X'的这4列的计数????
有可能???
答案 0 :(得分:3)
假设您要在列中的任何位置找到_X
,您可以尝试以下查询:
SELECT COUNT(*)
FROM yourTable
WHERE col LIKE '%[_]X%'
如果要计算四列匹配,其中匹配定义为四列匹配中的任意一列(总可能匹配得分为4),那么您可以尝试:
SELECT
col1, col2, col3, col4,
(CASE WHEN col1 LIKE '%[_]X%' THEN 1 ELSE 0 END +
CASE WHEN col2 LIKE '%[_]X%' THEN 1 ELSE 0 END +
CASE WHEN col3 LIKE '%[_]X%' THEN 1 ELSE 0 END +
CASE WHEN col4 LIKE '%[_]X%' THEN 1 ELSE 0 END) AS cnt
FROM yourTable
如果您的示例数据暗示,您只想在字符串末尾匹配此模式,则可以改为使用LIKE '%[_]X
。
我回答是因为您的问题比上述评论所暗示的要复杂一些,因为您希望将文字下划线与LIKE
匹配。在这种情况下,我们可以通过放入方括号来逃避下划线。
答案 1 :(得分:0)
SELECT COUNT(*)
FROM yourTable
WHERE (img01 LIKE '%[_]X%') or (img02 LIKE '%[_]X%') or (img03 LIKE '%[_]X%') or (img04 LIKE '%[_]X%')
如果你想确保所有列的字符串都使用AND而不是OR