我必须从只读db做一些静态,其中值以奇怪的形式存储
例如: 我有两行,如
ID text field
1 1001,1003,1004
2 1003, 1005
我需要能够算出这是“5”。
我没有写入权限,所以不知道如何在没有创建功能的情况下立即阅读和计数。
答案 0 :(得分:19)
这里有一个聪明的解决方案:How to count items in comma separated list MySQL
LENGTH(textfield) - LENGTH(REPLACE(textfield, ',', '')) + 1
编辑
是的,您可以选择它作为附加列:并使用@HamletHakobyan的答案中的CHAR_LENGTH进行更正:
SELECT
ID,
textfield,
(CHAR_LENGTH(textfield) - CHAR_LENGTH(REPLACE(textfield, ',', '')) + 1) as total
FROM table
答案 1 :(得分:9)
SELECT SUM(LENGTH(textfield) - LENGTH(REPLACE(textfield, ',', '')) + 1)
FROM tablename
答案 2 :(得分:4)
在所有答案中都有一个小但重要的遗漏。只有当数据库字符集为utf8
左右时,即符号,
获得一个字节时,所有这些都将起作用。 LENGTH
函数返回 bytes
的数量而非 chars
的事实。正确答案是使用返回字符数的CHAR_LENGTH
。
SELECT
SUM(CHAR_LENGTH(textfield) - CHAR_LENGTH(REPLACE(textfield, ',', '')) + 1) cnt
FROM yourTable
答案 3 :(得分:0)
您可以使用以下内容:
select sum(total) TotalWords
from
(
select length(`text field`) - length(replace(`text field`, ',', '')) + 1 total
from yourtable
) x
答案 4 :(得分:0)
一切都错了,对我不起作用。 唯一起作用的就是这个波纹管
SELECT (length(`textfield`) - length(replace(`textfield`, ',', '')) + 1) as my
FROM yourtable;
这是我的小提琴
答案 5 :(得分:0)
SELECT (LENGTH(column_name) - LENGTH(REPLACE(column_name, ',', '')) + 1) as value_count
FROM table_name
此处LENGTH(column_name) - LENGTH(REPLACE(column_name, ',', ''))
给出每列值中的逗号数。带有该值的+1提供以逗号分隔的值的数量。
答案 6 :(得分:0)
如果某人正在寻找解决方案以为空字段返回0。
Expected a ')' with this piece of code on the int[4] pins
^