我有一個包含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