SELECT
substring_index(substring_index('张三,李四,王五,赵六,杨七',',',help_topic_id +1),',',-1)AS Id
FROM
mysql.help_topic
WHERE
help_topic_id <(length('张三,李四,王五,赵六,杨七')- length(REPLACE('张三,李四,王五,赵六,杨七',',',''))+1);
运行结果
解释
help_topic表
此处利用 mysql 库的 help_topic 表的 help_topic_id 来作为变量,因为 help_topic_id 是连续自增的,当然也可以用其他表的连续自增字段辅助。
涉及函数
字符串拆分: SUBSTRING_INDEX(str, delim, count)
参数
解释
str
需要拆分的字符串
delim
分隔符,通过某字符进行拆分
count
当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。
替换函数:replace( str, from_str, to_str)
参数
解释
str
需要进行替换的字符串
from_str
需要被替换的字符串
to_str
需要替换的字符串
获取字符串长度:LENGTH( str )
参数
解释
str
需要计算长度的字符串
遇到的问题
sql执行报错:SELECT command denied to user '###' for table 'help_topic' SELECT命令拒绝用户 '###‘用于表’help_topic’
原因 : mysql用户没有执行查询help_topic表的权限,需要root用户授权。
解决 用mysql的root账户执行 GRANT SELECT ON mysql.help_topic TO 'wp'@'localhost'(给用户授予mysql.help_topic的查询权限)
扩展
创建用户 方式1: CREATE USER 'wp'@'localhost' IDENTIFIED BY '123456'; 方式2: GRANT USAGE ON *.* TO 'wp'@'localhost' IDENTIFIED BY '132456';
删除用户 DROP USER 'wp'@'localhost';
查询用户 SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
用户授权 GRANT SELECT ON mysql.help_topic TO 'wp'@'localhost'
取消用户授权 REVOKE SELECT ON mysql.help_topic FROM 'wp'@'localhost';