我想算一个逗号的长度分离柱
我有我的选择查询使用这些计数逗号分隔值 - 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,而不是你列出的。你能通过查询来验证吗? –