我有一个包含逗号分隔值的列,我需要选择所有包含13个逗号的行。它们分隔数字,所以我不需要担心任何包含逗号的字符串。我该怎么做?
答案 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;