选择逗号分隔的列表项的数量

时间:2011-01-03 15:08:59

标签: sql mysql

我有一个包含逗号分隔值的列,我需要选择所有包含13个逗号的行。它们分隔数字,所以我不需要担心任何包含逗号的字符串。我该怎么做?

4 个答案:

答案 0 :(得分:5)

替代喜欢(我不喜欢like,如果包含14个逗号或更多,则上述内容将失败)

select * from table
where length(replace(your_column, ',', ''))=length(your_column)-13;

为了更好地利用索引,您应该设法规范化表格

答案 1 :(得分:2)

如果你正在使用PostgreSQL,你也可以使用正则表达式。

但是,一个更好的问题可能是您使用逗号分隔值而不是多列的单个列。

答案 2 :(得分:1)

如果你用14个逗号计算一个包含13个逗号的字符串,那么这将起作用:

SELECT * FROM table WHERE column LIKE '%,%,%,%,%,%,%,%,%,%,%,%,%,%'

%匹配任何字符串(包括零长度)。

答案 3 :(得分:0)

在PostgreSQL中你可以这样做:

select col from table where length(regexp_replace(col, '[^,]', '', 'g')) = 13;