如何在MySQL查询中查找包含管道分隔符的表列中特定值的出现次数?

时间:2017-09-01 07:46:40

标签: java mysql

如何在MySQL查询中查找包含管道分隔符的表列中特定值的出现次数?

请参阅以下字符串:

0|5573|73|5573|73

我想在上面的字符串中计算73,它应该给出答案为2。

-----------------------------
column            -- count
------------------------------
0|5573|73|5573|73 -- 2

1 个答案:

答案 0 :(得分:2)

请参考下面的mysql查询,根据您的问题,该查询将不会返回特定值的出现。

在下面的查询中,test_table是一个表,其中包含名为' test_colum'的列。其中包含' 0 | 5573 | 73 | 5573 | 73' 等值,并且您希望 找到值#73;&# 39;

SELECT 
    test_colum,  
(IF((POSITION('73|' IN test_colum))=1,1,0))
+
  ( ROUND (   
        (
            (LENGTH(test_colum)
            - LENGTH( REPLACE ( test_colum, "|73|", "")) 
            ) 
        ) / LENGTH("|73|")        
    ) 
+
IF((substring_index(test_colum,'|',-1) = '73'),1,0)) AS value_cnt
FROM test_table;

会产生如下结果:

test_colum         value_cnt
0|5573|73|5573|73    2