mysql拆分字符串为多行

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);
运行结果

在这里插入图片描述

解释
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';
  • 查询用户授权
    SHOW GRANTS FOR 'wp'@'localhost';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值