我想算一個逗號的長度分離柱
我有我的選擇查詢使用這些計數逗號分隔值 - SQL
(LENGTH(Col2) - LENGTH(REPLACE(Col2,",","")) + 1)
。
演示:對於前兩個行
id | mycolumn
1 2,5,8,60
2 4,5,1
3 5,Null,Null
查詢結果即將correctly.for 1 = 4,2 = 3,但是對於第三行它也計算空值。
我想算一個逗號的長度分離柱
我有我的選擇查詢使用這些計數逗號分隔值 - SQL
(LENGTH(Col2) - LENGTH(REPLACE(Col2,",","")) + 1)
。
演示:對於前兩個行
id | mycolumn
1 2,5,8,60
2 4,5,1
3 5,Null,Null
查詢結果即將correctly.for 1 = 4,2 = 3,但是對於第三行它也計算空值。
這裏是什麼,我相信你的數據的實際狀況是:
id | mycolumn
1 2,5,8,60
2 4,5,1
3 NULL
換句話說,爲mycolumn
在你的第三個記錄的整個價值是NULL
,從做涉及NULL
值的操作可能。如果您確實有文字NULL
,您當前的查詢仍然可以正常工作。
解決此問題的方法是在處理字符串中的NULL
值時使用。
用戶也只能選擇一個值 –
您是否真的看過我的回答? –
總共有6個選項可供選擇。用戶可以根據自己的技能選擇選項。它可以只有一個或所有選項。因此,這些值將以gettting存儲爲5,null,null –
做粗的辦法是先更換的「 NULL」什麼也沒有匹配的字符串 -
SELECT a.id, (LENGTH(REPLACE(mycolumn, ',Null', '')) - LENGTH(REPLACE(REPLACE(mycolumn, ',Null', ''),",","")) + 1)
FROM some_table a
如果值是指行的ID在另一個表,那麼你可以加入對這個表使用FIND_IN_SET然後對匹配進行計數(假設字符串'Null'不是該另一個表上的ID)
SELECT a.id, COUNT(b.id)
FROM some_table a
INNER JOIN id_list_table b
ON FIND_IN_SET(b.id, a.mycolumn)
GROUP BY a.id
'mycolumn'的類型是什麼? –
列類型:varchar –
我的猜測是你的實際第三條記錄是NULL,而不是你列出的。你能通過查詢來驗證嗎? –