`
talentluke
  • 浏览: 604799 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MySQL字符串分割自定义函数

 
阅读更多

/**

*方法一

*/

select * from dbo.split(’01__02__03’,’__’)

  发生错误,返回的结果不是我们原本要的结果:

  -------------------

  --想要的结果

  01

  02

  03

  -----------------

  --实际结果:

  01

  _02

  _03

  以前我也写过类似的字符串分割自定义函数,也没有想过上面出现的这样问题。

  我原来的函数是这样的:

 

  /* 
  StringToTable 
  */ 
  CREATE FUNCTION StringToTable(@StringX varchar(8000),@Split nvarchar(10)) 
  RETURNS @TableResult TABLE(TableID nvarchar(20)) 
  AS 
  BEGIN 
  DECLARE @Index int 
  SET @Index=CHARINDEX(@Split,@StringX,1) 
  WHILE (@Index>=1) 
  BEGIN 
  INSERT INTO @TableResult SELECT LEFT(@StringX,@Index-1) 
  SELECT 
  @StringX=RIGHT(@StringX,LEN(@StringX)-@Index),@Index=CHARINDEX(@Split,@StringX,1) 
  END 
  IF(@StringX<>’’) INSERT INTO @TableResult SELECT @StringX 
  RETURN 
  END

 

  使用类似的select * from dbo.split(’01__02__03’,’__’) 一样出问题。

  经过一下的修改就可以了,修改后程序为: 

 

 /* 
  StringToTable 
  */ 
  CREATE FUNCTION StringToTable(@StringX varchar(8000),@Split nvarchar(10)) 
  RETURNS @TableResult TABLE(TableID nvarchar(20)) 
  AS 
  BEGIN 
  DECLARE @Index int 
  DECLARE @LenIndex int 
  SELECT @LenIndex=LEN(@Split),@Index=CHARINDEX(@Split,@StringX,1) 
  WHILE (@Index>=1) 
  BEGIN 
  INSERT INTO @TableResult SELECT LEFT(@StringX,@Index-1) 
  SELECT 
  @StringX=RIGHT(@StringX,LEN(@StringX)-@Index-@LenIndex+1),@Index=CHARINDEX(@Split,@Stri 
  ngX,1) 
  END 
  IF(@StringX<>’’) INSERT INTO @TableResult SELECT @StringX 
  RETURN 
  END

 

/**

*方法二

*/

set @b='123;234;567;789'; 

 

CREATE TEMPORARY TABLE splittable(

        id INT AUTO_INCREMENT primary key,

        VALUE VARCHAR(20)

    ) ;

 

set @sql=concat(concat("insert into splittable(value) values ('",replace(@b,';',"'),('")),"')"); 

 

prepare stem from @sql;

execute stem;

 

select * from splittable;

分享到:
评论

相关推荐

    mysql分割字符串

    本篇将详细介绍MySQL中的字符串分割技术及其相关知识点。 一、SUBSTRING_INDEX函数 MySQL中的`SUBSTRING_INDEX()`函数是进行字符串分割的常用工具。它返回一个子串,该子串包含了从原始字符串的起始部分到指定分隔...

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

    为了将字符串分割为数组,我们可以创建两个自定义函数和一个存储过程: 1. **func_get_split_string_total(f_string, f_delimiter)**: 这个函数用于计算字符串`f_string`中以`f_delimiter`分隔的子串数量。它是通过...

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

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

    MYSQL金额转大写.7z

    总之,在MySQL中处理“字符串分割”和“金额转大写”的需求虽然没有直接的函数支持,但可以通过组合使用现有的字符串函数和自定义映射表来达到目的。在实际项目中,这些技巧可以极大地增强数据库处理数据的能力,...

    数值运算字符串转换成数字.zip

    1. **内置函数**:在某些SQL方言中,如MySQL,你可以使用`STR_TO_DATE()`函数或`CAST()`/`CONVERT()`函数来尝试将字符串转换为数字。但这些函数并不能直接处理算术表达式,只能用于简单的数字字符串转换。 2. **...

    PHP简单判断字符串是否包含另一个字符串的方法

    该函数使用了explode()函数,这是一个通过指定的分隔符来将字符串分割成数组的函数。在自定义的checkStr()函数中,将主字符串($str)作为分隔符,目标字符串($target)作为要分割的内容。如果explode()函数分割后...

    PHP常用函数PDF文件

    - `explode()`:将字符串分割为数组。 - `implode()`:将数组元素合并为字符串。 2. **数组操作函数**: - `array_push()`:向数组末尾添加一个或多个元素。 - `array_pop()`:删除并返回数组的最后一个元素。 ...

    mysql函数split功能实现

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

    PHP和MySQL Web开发第4版pdf以及源码

    4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()和join() 4.3.2 使用strtok()函数 4.3.3 使用substr()函数 4.4 字符串的比较 4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() ...

    mysql第七章.pdf

    MySQL表达式是用于构建查询或数据操作的语句,可按值类型分为字符串类型、数值类型和日期时间类型。表达式还可以按形式分为单一表达式和复合表达式。复合表达式可以进一步细分为行表达式、标量表达式和表表达式。在...

    PHP CookBook 3rd Edition

    5. 反转字符串:可以是单词级别的反转也可以是字节级别的反转,可以使用内置函数如`strrev()`,也可以自定义函数来实现。 6. 生成随机字符串:在进行测试或者生成令牌等场景下可能会需要随机字符串,可以使用`rand...

    PHP上百个常用功能函数.zip

    8. **正则表达式函数**:`preg_match()`用于在字符串中匹配正则表达式,`preg_replace()`进行正则替换,`preg_split()`通过正则表达式分割字符串。 9. **会话管理**:`session_start()`启动会话,`$_SESSION`全局...

    php常用函数合集,有七个pdf文档

    - `explode() / implode()`: 分割字符串为数组/合并数组为字符串。 2. **数组操作函数** - `count()`: 返回数组元素的数量。 - `array_push()`: 向数组末尾添加一个或多个元素。 - `array_pop()`: 删除并返回...

    PHP和MySQL WEB开发(第4版)

    4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()和join() 4.3.2 使用strtok()函数 4.3.3 使用substr()函数 4.4 字符串的比较 4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() 4.4.2...

    php使用手册 内有所有函数

    - 字符串处理:如str_replace()替换字符串,strpos()查找子字符串位置,explode()分割字符串等。 - 数组操作:array_merge()合并数组,array_push()向数组末尾添加元素,count()计算数组元素个数等。 5. **错误与...

    php基础知识,php 添 删 查 改 导出 带mysql数据库 s2.zip

    PHP支持用户自定义函数,也有许多内置函数,如print、echo用于输出,strlen用于计算字符串长度,array()用于创建数组等。 4. **字符串操作** PHP提供了丰富的字符串处理函数,如str_replace替换子串,strpos查找...

    PHP和MySQL Web开发第4版

    4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()和join() 4.3.2 使用strtok()函数 4.3.3 使用substr()函数 4.4 字符串的比较 4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() ...

    php 常用函数php 常用函数

    - `explode()`:将字符串分割成数组。 - `implode()`:将数组元素组合成一个字符串。 2. **数组操作函数** - `count()`:返回数组的元素个数。 - `array_push()`:向数组末尾添加一个或多个元素。 - `array_...

    PHP函数手册

    2. **字符串操作**:`strlen()`、`str_replace()`、`explode()`和`implode()`等函数用于处理和操作字符串,如计算长度、替换字符、分割和合并字符串。 3. **日期和时间**:`date()`、`time()`、`strtotime()`等函数...

    PHP 常用函数 集合

    - `preg_split()`: 使用正则表达式分割字符串。 以上只是一部分PHP常用函数的概述,实际中还有许多其他功能强大的函数,如图像处理函数(如GD库),网络请求函数(如cURL),以及与服务器环境相关的函数(如`$_...

Global site tag (gtag.js) - Google Analytics