mysql中获取某个子串在一个字符串中出现的次数

1、需求

统计某个子串字符串出现的次数子串字符串中是否出现过。

2、功能事项

2.1 统计某个子串是否在字符串中出现过

mysql> select find_in_set('02','01,02,03,04,05');
+------------------------------------+
| find_in_set('02','01,02,03,04,05') |
+------------------------------------+
|                                  2 |
+------------------------------------+
1 row in set (0.00 sec)

find_in_set: 返回字符串列表中字符串的位置,位置从1开始。被查找的数据需要以,分隔。

2.2 统计某个子串在字符串中出现的次数

  1. length:统计的是字符串所占的字节数
  2. char_length:统计的是字符串所占的字符数
  3. 子串出现的次数= (原始字符串字符数 - (原始字符串字符数 - 替换子串后的字符串字符数))/替换子串后的字符串字符数
mysql> select '01,02,03,中文,05' '原始字符串',
    ->        length('01,02,03,中文,05') 'code字段的值所占的字节数',
    ->        char_length('01,02,03,中文,05') 'code字段的值所占的字符数',
    ->        charset('01,02,03,中文,05') 'code字段的字符编码,一个中文utf8mb4占3个字节',
    ->        (char_length('01,02,03,中文,05') - char_length(replace('01,02,03,中文,05','02','')))/char_length('02') '02出现的次数';
+-----------------------------------+------------------------------------+------------------------------------+------------------------------------------------------------+-------------------+
| 01,02,03,中文,05                  | code字段的值所占的字节数           | code字段的值所占的字符数           | code字段的字符编码,一个中文utf8mb4占3个字节                | 02出现的次数      |
+-----------------------------------+------------------------------------+------------------------------------+------------------------------------------------------------+-------------------+
| 01,02,03,中文,05原始字符串        |                                 18 |                                 14 | utf8mb4                                                    |            1.0000 |
+-----------------------------------+------------------------------------+------------------------------------+------------------------------------------------------------+-------------------+
1 row in set (0.00 sec)

统计某个子串在字符串中出现的次数

你可能感兴趣的:(数据库,mysql,数据库,find_in_set,char_length,子串在字符串中出现的次数)