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 是連續自增的,當然也可以用其他表的連續自增字段輔助。

 

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

 

 

轉: https://blog.csdn.net/HELLOMRP/article/details/105270049

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM