亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql通過存儲過程分割字符串為數(shù)組

 更新時間:2019年03月25日 16:23:38   作者:雙斜杠少年  
今天小編就為大家分享一篇關于Mysql通過存儲過程分割字符串為數(shù)組,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

分割字符串為數(shù)組需要用到 三個mysql 的函數(shù) :

REVERSE(str) 返回顛倒字符順序的字符串str。

SUBSTRING_INDEX(str,delim,count)

返回從字符串str的第count個出現(xiàn)的分隔符delim之后的子串。如果count是正數(shù),返回最后的分隔符到左邊(從左邊數(shù)) 的所有字符。如果count是負數(shù),返回最后的分隔符到右邊的所有字符(從右邊數(shù))。

REPLACE(str,from_str,to_str)

返回字符串str,其字符串from_str的所有出現(xiàn)由字符串to_str代替。

通過三個函數(shù)的組合使用做到分割字符串為數(shù)組的功能。

首先寫兩個函數(shù)

1,獲得所有以“某個符號“分割的字符串的個數(shù),函數(shù)內容如下

(將sql代碼復制放在navicat中執(zhí)行即可)

DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `func_get_split_string_total`(
f_string varchar(1000),f_delimiter varchar(5)
) RETURNS int(11)
BEGIN
 -- Get the total number of given string.
 return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
END$$
DELIMITER ;

2、按分割取出字符串

(將sql代碼復制放在navicat中執(zhí)行即可)

DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `func_get_split_string`(
f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8
BEGIN
 -- Get the separated number of given string.
 declare result varchar(255) default '';
 set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));
 return result;
END$$
DELIMITER ;

然后再寫一個存儲過程進行組合使用這兩個函數(shù),輸入需要分割的字符串 ,和分隔符,輸出 按某某符號分割后的數(shù)組

(將sql代碼復制放在navicat中執(zhí)行即可)

DELIMITER $$
CREATE PROCEDURE `sp_print_result`(
 IN f_string varchar(1000),IN f_delimiter varchar(5)
)
BEGIN
 -- Get the separated string.
 declare cnt int default 0;
 declare i int default 0;
 set cnt = func_get_split_string_total(f_string,f_delimiter);
 drop table if exists tmp_print;
 create temporary table tmp_print (num int not null);
 while i < cnt
 do
  set i = i + 1;
  insert into tmp_print(num) values (func_get_split_string(f_string,f_delimiter,i));
 end while;
 select * from tmp_print;
END$$
DELIMITER ;

然后輸入字符串進行測試。

call sp_print_result(“434,123,12,234,123,123”,”,”);

結果如下圖

可能執(zhí)行的時候會報錯:The user specified as a definer (‘root'@'%') does not exist

解決方法如下:

執(zhí)行 :grant all privileges on *.* to root@"%" identified by ".";

執(zhí)行 :flush privileges;

就解決了這個問題。

最后說一下存儲過程和mysql的函數(shù)

存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對象的任務,用戶可以調用存儲過程,而函數(shù)通常是數(shù)據(jù)庫已定義的方法,它接收參數(shù)并返回某種類型的值并且不涉及特定用戶表。

存儲過程和函數(shù)存在以下幾個區(qū)別:

1)一般來說,存儲過程實現(xiàn)的功能要復雜一點,而函數(shù)的實現(xiàn)的功能針對性比較強。存儲過程,功能強大,可以執(zhí)行包括修改表等一系列數(shù)據(jù)庫操作;用戶定義函數(shù)不能用于執(zhí)行一組修改全局數(shù)據(jù)庫狀態(tài)的操作。

2)對于存儲過程來說可以返回參數(shù),如記錄集,而函數(shù)只能返回值或者表對象。函數(shù)只能返回一個變量;而存儲過程可以返回多個。存儲過程的參數(shù)可以有IN,OUT,INOUT三種類型,而函數(shù)只能有IN類~~存儲過程聲明時不需要返回類型,而函數(shù)聲明時需要描述返回類型,且函數(shù)體中必須包含一個有效的RETURN語句。

3)存儲過程,可以使用非確定函數(shù),不允許在用戶定義函數(shù)主體中內置非確定函數(shù)。

4)存儲過程一般是作為一個獨立的部分來執(zhí)行( EXECUTE 語句執(zhí)行),而函數(shù)可以作為查詢語句的一個部分來調用(SELECT調用),由于函數(shù)可以返回一個表對象,因此它可以在查詢語句中位于FROM關鍵字的后面。 SQL語句中不可用存儲過程,而可以使用函數(shù)。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

  • mysql 正確清理binlog日志的兩種方法

    mysql 正確清理binlog日志的兩種方法

    這篇文章主要介紹了mysql 正確清理binlog日志的相關資料,需要的朋友可以參考下
    2017-07-07
  • MySQL優(yōu)化之分區(qū)表

    MySQL優(yōu)化之分區(qū)表

    這篇文章主要介紹了MySQL優(yōu)化之分區(qū)表,需要的朋友可以參考下
    2016-06-06
  • Linux系統(tǒng)中MySQL的常用操作命令

    Linux系統(tǒng)中MySQL的常用操作命令

    本文給大家匯總介紹了下載Linux系統(tǒng)中操作mysql的一些常用的命令,非常實用,有需要的小伙伴可以參考下
    2018-02-02
  • 簡單了解 MySQL 中相關的鎖

    簡單了解 MySQL 中相關的鎖

    這篇文章主要介紹了簡單了解 MySQL 中相關的鎖,重點介紹InnoDB中的鎖相關知識,包括鎖的概念及分類解析,對MySQL鎖相關感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • 實現(xiàn)mysql級聯(lián)復制的方法示例

    實現(xiàn)mysql級聯(lián)復制的方法示例

    這篇文章主要介紹了實現(xiàn)mysql級聯(lián)復制的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 詳解MySql存儲過程參數(shù)的入門使用

    詳解MySql存儲過程參數(shù)的入門使用

    這篇文章主要介紹了MySql存儲過程參數(shù)的入門使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 安裝mysql8.0.11及修改root密碼、連接navicat for mysql的思路詳解

    安裝mysql8.0.11及修改root密碼、連接navicat for mysql的思路詳解

    這篇文章主要介紹了安裝mysql8.0.11以及修改root密碼、連接navicat for mysql,需要的朋友可以參考下
    2018-06-06
  • SQL觸發(fā)器定義與使用

    SQL觸發(fā)器定義與使用

    SQL的觸發(fā)器和存儲過程一樣,都是嵌入到SQL中的一段程序,是SQL中管理數(shù)據(jù)的有力工具,本文給大家詳細介紹SQL觸發(fā)器的定義語法知識,感興趣的朋友一起看看吧
    2023-01-01
  • 4種MySQL數(shù)據(jù)同步ES方案詳解

    4種MySQL數(shù)據(jù)同步ES方案詳解

    這篇文章主要給大家分享介紹了關于4種MySQL數(shù)據(jù)同步ES方案的相關資料,MySQL是一種常用的關系型數(shù)據(jù)庫,而Elasticsearch是一種為搜索和分析而設計的分布式全文搜索引擎,需要的朋友可以參考下
    2023-10-10
  • Mysql獲取id最大值、表的記錄總數(shù)等相關問題的方法匯總

    Mysql獲取id最大值、表的記錄總數(shù)等相關問題的方法匯總

    在做網站開發(fā)時,我們也許會想要取得mysql里id最大的一條記錄,這個其實很簡單。這篇文章給大家整理了獲取一個表的記錄數(shù)、獲取一個表的最大id、獲取一個表的auto_increment值等相關問題的答案,有需要的朋友們可以參考借鑒。
    2016-09-09

最新評論