1、Oracle中
创建代码:
create or replace type t_SplitTable as object
(
id integer,
valueStr varchar2(8000)
)
;
create or replace type t_Split_Table as table of t_SplitTable;
create or replace function Fun_SplitByDot(p_str varchar2, p_char varchar2) return t_Split_Table as v_table t_Split_Table := t_Split_Table();
v_num_id integer; v_var_data varchar2(2000); v_num_index integer; begin
select nvl(p_str, '') into v_var_data from dual; if length(v_var_data) = 0 then return v_table; --字符长度为0 ,退出
end if;
v_num_id := 1;
select instr(v_var_data, p_char) into v_num_index from dual; while(v_num_index > 0) loop
v_table.extend(); v_table(v_table.count) := t_SplitTable(v_num_id, substr(v_var_data, 0, v_num_index - 1));
v_num_id := v_num_id + 1; select substr(v_var_data, v_num_index + 1, length(v_var_data) - v_num_index) into v_var_data from dual; select instr(v_var_data, p_char) into v_num_index from dual; end loop; if length(v_var_data) > 0 then v_table.extend(); v_table(v_table.count) := t_SplitTable(v_num_id, v_var_data); end if;
return v_table;
end Fun_SplitByDot;
查询:
select * from table(fun_splitbydot('a,2000001481,c',','));
2、SqlServer
创建代码:
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,@StringX,1)
END
IF(@StringX<>'') INSERT INTO @TableResult SELECT @StringX
RETURN
END
查询:
select * from StringToTable('01__02__03','__')
3、MySql
创建代码:
# 函数:func_split_TotalLength
DROP function IF EXISTS `func_split_TotalLength` ;
CREATE FUNCTION `func_split_TotalLength`
(f_string varchar(1000),f_delimiter varchar(5)) RETURNS int(11)
BEGIN
# 计算传入字符串的总length
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
END;
# 函数:func_split
DROP function IF EXISTS `func_split` ;
CREATE FUNCTION `func_split`
(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;
# 存储过程:splitString
DROP PROCEDURE IF EXISTS `splitString` ;
CREATE PROCEDURE `splitString`
(IN f_string varchar(1000),IN f_delimiter varchar(5))
BEGIN
# 拆分结果
declare cnt int default 0;
declare i int default 0;
set cnt = func_split_TotalLength(f_string,f_delimiter);
DROP TABLE IF EXISTS `tmp_split`;
create temporary table `tmp_split` (`status` varchar(128) not null) DEFAULT CHARSET=utf8;
while i < cnt
do
set i = i + 1;
insert into tmp_split(`status`) values (func_split(f_string,f_delimiter,i));
end while;
END;
查询代码:
#测试是否能成功分割
#call splitString("apple,banana,orange,pears,grape",",");
#select * from tmp_split;
分享到:
相关推荐
将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...
有时我们需要将一个长字符串分割成多个部分,以便进行进一步的操作。Oracle提供了一些内置的函数来帮助我们完成这个任务。本篇文章将深入探讨Oracle中用于拆分字符串的函数,并通过具体的示例展示它们的用法。 1. *...
本文将详细介绍一个自定义的SQL函数`StringToTable`,该函数能够实现字符串分割的功能,并将结果存储在一个临时表中以便后续查询或处理。 #### 函数定义 ```sql CREATE FUNCTION StringToTable( @StringX varchar...
本篇将详细介绍MySQL中的字符串分割技术及其相关知识点。 一、SUBSTRING_INDEX函数 MySQL中的`SUBSTRING_INDEX()`函数是进行字符串分割的常用工具。它返回一个子串,该子串包含了从原始字符串的起始部分到指定分隔...
### PostgreSQL数字结尾字符串分割排序详解 #### 功能概述 本文档旨在详细介绍如何通过自定义函数在PostgreSQL数据库中实现一种特殊的排序方式:对于以数字结尾的字符串,首先将其分为两部分,一部分为非数字字符串...
为了解决这个问题,我们可以创建一个字符串分割函数,通过直接查询就能将分割后的结果转换成多行数据。 1. 创建字符串分割函数 首先,我们需要创建一个字符串分割函数,名为 `StringSplit`。这个函数将接受两个...
### SQL2000 字符串分割方法解析 在处理大量数据时,经常需要对包含逗号分隔值(CSV)格式的字符串进行拆分,以便于进一步的数据处理与分析。本文将详细介绍如何使用SQL Server 2000中的T-SQL语言实现字符串的拆分...
### 数据库字符串处理知识点 #### 一、字符串处理在数据库中的重要性 在数据库操作中,字符串处理是一项非常重要的技能。无论是数据清洗、格式化还是提取有用信息,字符串处理功能都发挥着至关重要的作用。例如,在...
在数据库管理系统中,字符串分割是一个非常常见的问题,特别是在处理逗号分割的字符串数据时。今天,我们将讨论如何在 T-SQL 中获取逗号分割的字符串数据中的元素。 方法一:利用循环逐个取出字符串的元素 在之前...
本文将详细介绍两种在Oracle中实现字符串分割的方法:第一种是通过创建类型和管道函数的方式;第二种则是通过循环和子字符串处理实现的。 #### 二、第一种实现方式:创建类型和管道函数 ##### 1. 创建类型 `TY_STR...
字符串分割:`regexp_split_to_table` `regexp_split_to_table` 函数可以按照正则表达式来分割字符串。 ```sql SELECT regexp_split_to_table(col, ',') FROM (VALUES ('a2,a1')) t(col); ``` ### 密码哈希函数 #...
本文详细介绍了如何在 Oracle 数据库中实现字符串分隔的功能,通过自定义函数 `splitstr` 实现了根据用户定义的分隔符来分割字符串的目标。这种方法不仅灵活,而且易于维护和扩展,非常适合于处理各种复杂的字符串...
### ASP+ACCESS中使用Split函数进行字符串分割及比较方法 #### 概述 在ASP(Active Server Pages)脚本语言中,开发人员经常需要处理字符串的分割与比较操作。其中,`Split`函数是一个非常实用的功能,它可以将一...
函数内部使用了一个循环来拆分字符串,每次循环都会将拆分后的结果返回给调用者。 最后,我们可以使用这个函数来拆分字符串。例如,我们可以使用以下 SQL 语句来拆分一个字符串: ``` SELECT * FROM TABLE(f_split...
7. **chunk_split($string, $split_length, $end)**: 将字符串分割成多个长度不超过$split_length的部分,每个部分后附加$end字符作为结束符。 8. **hebrev($text, $flags, $encoding)**: 对希伯来文进行编码,使之...
在Oracle数据库中,处理字符串是一项常见的需求,尤其是在需要将包含特定分隔符的字符串分割成多个独立的部分时。Oracle标准SQL并没有提供直接用于字符串分割的内置函数,因此开发者通常会通过自定义函数的方式来...
为了实现一个能够将字符串分割成多个部分的函数,我们首先需要定义一个Pipelined Table类型。在这个例子中,我们将定义一个名为`ty_str_split`的类型,它是一个VARCHAR2类型的表,可以用来存储分割后的字符串。 ```...
这两种方法在处理不同情况下的字符串分割时可能有不同的效果。例如,如果字符串中的分隔符是多字符的,或者字符串包含连续的分隔符,那么可能需要对这些情况进行特殊处理,以确保正确地拆分字符串。在实际使用时,应...
字符串函数如SPLIT_STR或内置的字符串函数(取决于数据库系统),可以将字符串分割成数组或列表。例如,在MySQL中,`SPLIT_STR('a,b,c', ',', 2)`返回'b'。 这些基本的字符串操作是SQL查询中不可或缺的部分,无论是...
- 此函数可以用于将包含多个用户ID的字符串分割成独立的ID,以便进一步处理或存储。例如,当从外部系统获取到一串用户ID时,可以使用该函数将其分割开来,并存入数据库中。 #### 总结 通过以上三个具体实例的学习,...