我有一个包含20个不同列的表,其中4个用于存储图像名称。如何在列值包含特定字符串的情况下返回计数
例如
img01 = abcdef_X
img02 = jklmno
img03 = tuvxys_X
img04 = awstyt_X
我能得到的SQL查询返回包含在它的_X“这4列的计数????
是否有可能?
我有一个包含20个不同列的表,其中4个用于存储图像名称。如何在列值包含特定字符串的情况下返回计数
例如
img01 = abcdef_X
img02 = jklmno
img03 = tuvxys_X
img04 = awstyt_X
我能得到的SQL查询返回包含在它的_X“这4列的计数????
是否有可能?
假设你想找到_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
。在这种情况下,我们可以通过放入方括号来避免下划线。
SELECT COUNT(*)
FROM yourTable
WHERE (img01 LIKE '%[_]X%') or (img02 LIKE '%[_]X%') or (img03 LIKE '%[_]X%') or (img04 LIKE '%[_]X%')
如果你想确保所有列
有串theen使用,取而代之的或
为什么如果有2列包含'_X',它会返回计数为1? – ace
列是两个,但行是1我猜计数funcionality剂量计数列它计数行 –
是的,但我想在4个不同的列执行它与返回的计数 – ace