sql示例:



SELECT
substring_index(substring_index('张三,李四,王五,赵六,杨七',',',help_topic_id + 1),',' ,- 1) AS Id
FROM
mysql.help_topic
WHERE
help_topic_id < (length('张三,李四,王五,赵六,杨七') - length(REPLACE ('张三,李四,王五,赵六,杨七', ',', '')) + 1);


运行结果

mysql拆分字符串为多行(逗号等分割)_用户授权

解释
help_topic表

此处利用 mysql 库的 help_topic 表的 help_topic_id 来作为变量,因为 help_topic_id 是连续自增的,当然也可以用其他表的连续自增字段辅助。

mysql拆分字符串为多行(逗号等分割)_自增_02

(如果不用这个表,自己可以建立一个表,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';

查询用户授权
SHOW GRANTS FOR 'wp'@'localhost';