/**
*方法一
*/
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中的字符串分割技术及其相关知识点。 一、SUBSTRING_INDEX函数 MySQL中的`SUBSTRING_INDEX()`函数是进行字符串分割的常用工具。它返回一个子串,该子串包含了从原始字符串的起始部分到指定分隔...
为了将字符串分割为数组,我们可以创建两个自定义函数和一个存储过程: 1. **func_get_split_string_total(f_string, f_delimiter)**: 这个函数用于计算字符串`f_string`中以`f_delimiter`分隔的子串数量。它是通过...
在SQL中,处理字符串时确实不如其他编程语言那样灵活,...以上就是在MySQL中实现类似SPLIT功能的方法,虽然不如某些编程语言直接支持数组那样方便,但通过自定义函数和巧妙的逻辑,我们仍然可以有效地处理分隔字符串。
总之,在MySQL中处理“字符串分割”和“金额转大写”的需求虽然没有直接的函数支持,但可以通过组合使用现有的字符串函数和自定义映射表来达到目的。在实际项目中,这些技巧可以极大地增强数据库处理数据的能力,...
1. **内置函数**:在某些SQL方言中,如MySQL,你可以使用`STR_TO_DATE()`函数或`CAST()`/`CONVERT()`函数来尝试将字符串转换为数字。但这些函数并不能直接处理算术表达式,只能用于简单的数字字符串转换。 2. **...
该函数使用了explode()函数,这是一个通过指定的分隔符来将字符串分割成数组的函数。在自定义的checkStr()函数中,将主字符串($str)作为分隔符,目标字符串($target)作为要分割的内容。如果explode()函数分割后...
- `explode()`:将字符串分割为数组。 - `implode()`:将数组元素合并为字符串。 2. **数组操作函数**: - `array_push()`:向数组末尾添加一个或多个元素。 - `array_pop()`:删除并返回数组的最后一个元素。 ...
在MySQL数据库中,虽然没有内置的`SPLIT`函数来直接处理字符串分割任务,但可以通过自定义函数或存储过程来实现类似的功能。以下是对标题和描述中提到的三个MySQL函数和过程的详细解释: 1. **函数`func_...
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表达式是用于构建查询或数据操作的语句,可按值类型分为字符串类型、数值类型和日期时间类型。表达式还可以按形式分为单一表达式和复合表达式。复合表达式可以进一步细分为行表达式、标量表达式和表表达式。在...
5. 反转字符串:可以是单词级别的反转也可以是字节级别的反转,可以使用内置函数如`strrev()`,也可以自定义函数来实现。 6. 生成随机字符串:在进行测试或者生成令牌等场景下可能会需要随机字符串,可以使用`rand...
8. **正则表达式函数**:`preg_match()`用于在字符串中匹配正则表达式,`preg_replace()`进行正则替换,`preg_split()`通过正则表达式分割字符串。 9. **会话管理**:`session_start()`启动会话,`$_SESSION`全局...
- `explode() / implode()`: 分割字符串为数组/合并数组为字符串。 2. **数组操作函数** - `count()`: 返回数组元素的数量。 - `array_push()`: 向数组末尾添加一个或多个元素。 - `array_pop()`: 删除并返回...
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...
- 字符串处理:如str_replace()替换字符串,strpos()查找子字符串位置,explode()分割字符串等。 - 数组操作:array_merge()合并数组,array_push()向数组末尾添加元素,count()计算数组元素个数等。 5. **错误与...
PHP支持用户自定义函数,也有许多内置函数,如print、echo用于输出,strlen用于计算字符串长度,array()用于创建数组等。 4. **字符串操作** PHP提供了丰富的字符串处理函数,如str_replace替换子串,strpos查找...
4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()和join() 4.3.2 使用strtok()函数 4.3.3 使用substr()函数 4.4 字符串的比较 4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() ...
- `explode()`:将字符串分割成数组。 - `implode()`:将数组元素组合成一个字符串。 2. **数组操作函数** - `count()`:返回数组的元素个数。 - `array_push()`:向数组末尾添加一个或多个元素。 - `array_...
2. **字符串操作**:`strlen()`、`str_replace()`、`explode()`和`implode()`等函数用于处理和操作字符串,如计算长度、替换字符、分割和合并字符串。 3. **日期和时间**:`date()`、`time()`、`strtotime()`等函数...
- `preg_split()`: 使用正则表达式分割字符串。 以上只是一部分PHP常用函数的概述,实际中还有许多其他功能强大的函数,如图像处理函数(如GD库),网络请求函数(如cURL),以及与服务器环境相关的函数(如`$_...