mysql中split函数

Jun 07, 2016 pm 03:33 PM
mysql split 関数

在mysql中并没有split函数,需要自己写: 1)获得按指定字符分割的字符串的个数: Sql代码 DELIMITER$$ DROP FUNCTION IFEXISTS`sims`.`func_get_split_string_total`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`( f_strin

在mysql中并没有split函数,需要自己写:

1)获得按指定字符分割的字符串的个数:

    

Sql代码  mysql中split函数

  1. DELIMITER $$  
  2.   
  3. DROP FUNCTION IF EXISTS `sims`.`func_get_split_string_total`$$  
  4.   
  5. CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`(  
  6. f_string varchar(1000),f_delimiter varchar(5)  
  7. RETURNS int(11)  
  8. BEGIN  
  9.   declare returnInt int(11);  
  10.   if length(f_delimiter)=2  then  
  11.      return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')))/2;  
  12.   else      
  13.      return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));  
  14.   end if;  
  15. END$$  
  16.   
  17. DELIMITER ;  

   例:func_get_split_string_total('abc||def||gh','||')  结果为3  

 

    2)得到第i个分割后的字符串。

 

   

Sql代码  mysql中split函数

  1. DELIMITER $$  
  2.   
  3. DROP FUNCTION IF EXISTS `sims`.`func_get_split_string`$$  
  4.   
  5. CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string`(  
  6. f_string varchar(1000),f_delimiter varchar(5),f_order intRETURNS varchar(255) CHARSET utf8  
  7. BEGIN  
  8.   declare result varchar(255) default '';  
  9.   set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));  
  10.   return result;  
  11. END$$  
  12.   
  13. DELIMITER ;  

   例如:func_get_split_string('abc||def||gh','||',2) 为def

 

 

   3) 需求:A表中的一个字段值为1||2, 在select 时要通过和B字典表的关联得到a,b

   

Sql代码  mysql中split函数

  1. CREATE DEFINER=`root`@`localhost` FUNCTION `getDictName`(v_str varchar(100)) RETURNS varchar(100) CHARSET utf8  
  2. BEGIN  
  3.             
  4.           DECLARE i int(4);  
  5.           DECLARE dictCode varchar(100);  
  6.           DECLARE dictName varchar(100);  
  7.           DECLARE returnStr varchar(100);   
  8.           
  9.           set i = 1;  
  10.           set returnStr = '';        
  11.             
  12.           if(v_str is null or length(v_str)=0) then  
  13.                return returnStr;  
  14.           else  
  15.             
  16.           while i'||')  
  17.           do  
  18.                set dictCode = func_get_split_string(v_str,'||',i);  
  19.             
  20.                select names into dictName from sims_dd_dict where code = dictCode;   
  21.             
  22.                set returnStr = concat(returnStr,',',dictName);  -- 这里要用中文的逗号,否则导出EXCEL的时候会串行,因为程序中是以逗号分隔的  
  23.           set i = i+1;  
  24.           end while;  
  25.              
  26.           set returnStr = subString(returnStr,2);            
  27.           return returnStr;  
  28.              
  29.           end if;  
  30.     END$$  
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのビッグデータ構造処理スキル PHPのビッグデータ構造処理スキル May 08, 2024 am 10:24 AM

PHPのビッグデータ構造処理スキル

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 03, 2024 pm 08:11 PM

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? Jun 02, 2024 pm 02:26 PM

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? May 05, 2024 am 09:06 AM

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか?

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

Excel関数の公式の完全なコレクション Excel関数の公式の完全なコレクション May 07, 2024 pm 12:04 PM

Excel関数の公式の完全なコレクション

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? Jun 02, 2024 pm 02:13 PM

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか?

See all articles