`
zy116494718
  • 浏览: 477739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql中split函数

阅读更多

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

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

    

DELIMITER $$

DROP FUNCTION IF EXISTS `sims`.`func_get_split_string_total`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`(
f_string varchar(1000),f_delimiter varchar(5)
) RETURNS int(11)
BEGIN
  declare returnInt int(11);
  if length(f_delimiter)=2  then
     return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')))/2;
  else    
     return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
  end if;
END$$

DELIMITER ;

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

 

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

 

   

DELIMITER $$

DROP FUNCTION IF EXISTS `sims`.`func_get_split_string`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string`(
f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8
BEGIN
  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 ;

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

 

 

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

   

CREATE DEFINER=`root`@`localhost` FUNCTION `getDictName`(v_str varchar(100)) RETURNS varchar(100) CHARSET utf8
BEGIN
          
          DECLARE i int(4);
          DECLARE dictCode varchar(100);
          DECLARE dictName varchar(100);
          DECLARE returnStr varchar(100); 
        
          set i = 1;
          set returnStr = '';      
          
          if(v_str is null or length(v_str)=0) then
               return returnStr;
          else
          
          while i<=func_get_split_string_total(v_str,'||')
          do
               set dictCode = func_get_split_string(v_str,'||',i);
          
               select names into dictName from sims_dd_dict where code = dictCode; 
          
               set returnStr = concat(returnStr,',',dictName);  -- 这里要用中文的逗号,否则导出EXCEL的时候会串行,因为程序中是以逗号分隔的
          set i = i+1;
          end while;
           
          set returnStr = subString(returnStr,2);          
          return returnStr;
           
          end if;
    END$$

  

     

 

 

 

1
1
分享到:
评论
1 楼 hot66hot 2012-01-11  

相关推荐

    mysql函数split功能实现

    在MySQL数据库中,虽然没有内置的`SPLIT`函数来直接处理字符串分割任务,但可以通过自定义函数或存储过程来实现类似的功能。以下是对标题和描述中提到的三个MySQL函数和过程的详细解释: 1. **函数`func_...

    MySQL里实现类似SPLIT的分割字符串的函数

    在SQL中,处理字符串时确实不如其他编程语言那样灵活,...以上就是在MySQL中实现类似SPLIT功能的方法,虽然不如某些编程语言直接支持数组那样方便,但通过自定义函数和巧妙的逻辑,我们仍然可以有效地处理分隔字符串。

    mysql split函数用逗号分隔的实现

    虽然MySQL的标准库中没有直接提供`split`函数,但可以通过自定义存储过程和函数来实现类似的功能。这里我们将详细讲解如何在MySQL中实现一个用逗号分隔的`split`函数。 首先,我们创建一个存储过程`splitString`,...

    php+mysql常用函数

    `split()`函数则用于根据指定的分隔符将字符串分割成数组。这对于处理CSV数据或者需要拆分字符串的情况非常有用。你还可以通过`limit`参数限制分割出的数组元素数量。 最后,`sql_regcase()`函数是一个不太常见的...

    PHP/MYSQL函数

    尤其是在与MySQL数据库交互的过程中,理解并熟练应用这些函数能够显著提升开发效率和程序的灵活性。此外,正则表达式的理解和运用也是高级PHP开发者必备的技能之一。希望本文的解析能够帮助读者更深入地了解这些函数...

    mysql常用函数列表 (2).pdf

    此外,MySQL 还支持正则表达式函数,如 `ereg`、`ereg_replace`、`eregi`、`eregi_replace`、`split` 和 `sql_regcase`,它们在处理字符串时提供了强大的匹配和替换功能,可以极大地提升数据库查询的灵活性和效率。...

    MySql函数-取一个字符串分隔后指定位置的子字符串

    一、函数功能:对字符串进行分隔数组,取指定顺序位置的子字符串,支持左右双向获取,支持...二、函数格式:fn_get_split_val(in_str varchar,in_delimiter varchar,in_order int,in_default varchar) 三、测试用例

    db2迁移到mysql.docx

    同样地,在DB2中使用`TO_DATE`函数转换字符串为日期时间,而在MySQL中则使用`STR_TO_DATE`函数。 ```sql -- DB2 SELECT F_GET_STR_TO_DATE(startDate DATETIME, split_format VARCHAR(25), dateType VARCHAR(3)) --...

    mysql存储过程实现split示例

    在本示例中,我们将深入探讨如何在MySQL中创建一个存储过程,用于将字符串按照指定的分隔符进行拆分,即实现类似JavaScript中的`split()`函数的功能。 首先,我们来看一下提供的存储过程代码: ```sql drop ...

    Mysql通过存储过程分割字符串为数组

    在MySQL中,处理字符串时,有时需要将一个字符串分割成多个部分,这通常在处理以特定字符分隔的数据时出现。本话题主要介绍如何利用存储过程来实现这一功能,涉及的关键知识点包括MySQL的内置函数以及存储过程的创建...

    利用Split函数进行多关键字检索

    为提高效率,可以考虑使用更高级的全文检索技术,如倒排索引,或者数据库特定的字符串处理函数,如SQL Server的`STRING_SPLIT`或MySQL的`FIND_IN_SET`。 总的来说,`Split`函数是一个强大的工具,能帮助我们处理...

    JAVA串口助手接收数据并解析数据存入MySQL数据库中

    在本文中,我们将深入探讨如何使用Java开发一个串口助手应用程序,该程序能接收来自串行端口的数据并将其解析后存储到MySQL数据库中。首先,我们需要了解串口通信的基本概念,然后学习Java如何处理串口输入,接着是...

    给Oracle添加split和splitstr函数的方法

    最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理。 以往的处理方式有如下几种: 1、在存储过程内写循环,逐个分析字符串中的ID,然后...

    PHP mysql基础知识技术考题分享,用于面试,考题用

    1. PHP中的字符串分割函数,`split`函数使用正则表达式将字符串分割成数组,但此函数已废弃,推荐使用`preg_split`。`implode`用于将数组元素组合为一个字符串,`explode`是用指定字符分割字符串成数组,`join`与`...

    PBI--M语言函数.pdf

    * 字符串函数:Power Query M 语言的字符串函数用于处理字符串,如 concatenation、split、trim 等。 * 日期函数:Power Query M 语言的日期函数用于处理日期和时间,如 Today、Now、Date.Add 等。 数据访问函数 ...

    mysql临时表用法分析【查询结果可存在临时表中】

    在这个存储过程中,临时表 `tmp_split` 用于存储通过 `func_splitString` 函数分隔的字符串。 总结,MySQL临时表提供了一种灵活的方式来存储和处理临时数据,它们在处理大量数据和复杂的查询逻辑时尤其有用。临时表...

    Linux中将txt导入到mysql的方法教程

    在本例中,`insert()`函数使用`split()`方法拆分每一行数据,然后将拆分后的数据作为SQL插入语句的参数。 4. **异常处理**: 示例代码中没有涵盖错误处理部分,例如,如果TXT文件格式不正确,或者MySQL数据库连接...

Global site tag (gtag.js) - Google Analytics