2017-07-25 66 views
0

我有一個包含20個不同列的表,其中4個用於存儲圖像名稱。如何在列值包含特定字符串的情況下返回計數

例如

img01 = abcdef_X 
img02 = jklmno 
img03 = tuvxys_X 
img04 = awstyt_X 

我能得到的SQL查詢返回包含在它的_X「這4列的計數????

是否有可能?

+0

是的,但我想在4個不同的列執行它與返回的計數 – ace

回答

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。在這種情況下,我們可以通過放入方括號來避免下劃線。

+0

是有可能寫在4個不同的列相同的查詢,或者我只是我必須寫WHERE col1 like ..,col2 like ..,col3 like .. – ace

+0

你想要準確計算什麼?如果四列中的一列匹配,我們如何計算這一點? –

+0

是的這就是我說如果四個匹配中的一個'_X'我可以返回計數爲1 ?? – ace

0
SELECT COUNT(*) 
FROM yourTable 
WHERE (img01 LIKE '%[_]X%') or (img02 LIKE '%[_]X%') or (img03 LIKE '%[_]X%') or (img04 LIKE '%[_]X%') 
如果你想確保所有列

有串theen使用,取而代之的或

+0

爲什麼如果有2列包含'_X',它會返回計數爲1? – ace

+0

列是兩個,但行是1我猜計數funcionality劑量計數列它計數行 –

相關問題