split函数 sql(求sql split函数的用法)
本文目录
- 求sql split函数的用法
- **L怎么提取字段中最大值
- sql查询里 怎么拆分字符串(按“/”拆分)
- sql语句里有类似split的函数吗
- **L里有没有类似SPLIT的分割字符串函数
- **L 如何把字符串拆分按固定值插入到表里
- sql 分隔符
- Split(**L)
- Oracle按指定字符拆分字符串-split函数
求sql split函数的用法
目前的sql没有自带split的函数,所以如果想用的话,需要自己先自建一个split的内嵌函数后,再使用;
这个函数最简单的用法,就是通过某个特定的分隔符,将一串字符串分割开来;
例如:split(’a/b/c/d/e’,’/’),就会变成:
a
b
c
d
e
这个意思就是说,用’\’作为分隔符,分割’a/b/c/d/e’这个字符串;
具体如何构建split函数,可以参考一下这个:网页链接
当然还可以根据自己的需要,构建更复杂的函数,方便自己的使用;
**L怎么提取字段中最大值
1、既然被for xml path(’’)组合到一起了,那就想办法把这个字符串拆开;
2、可以创建一个Split这样的函数,来拆开这一列为一个表的形式;
3、然后,再查出这个表里的最大值即可
下面是Ufn_Split函数
create function (@Array varchar(max),@StrSeprate varchar(10))
returns @TokenVals table (fjj_id INT IDENTITY(1,1) ,strValue varchar(255))
as
begin
declare @strlen int, @curpos int, @val varchar(255), @nextcomma int
set @strlen = datalength(@Array)
set @curpos = 0
while @curpos 《= @strlen
begin
set @nextcomma = charindex(@StrSeprate, @Array, @curpos)
if @nextcomma = 0
set @nextcomma = @strlen + 1
set @val = substring(@Array,@curpos,@nextcomma - @curpos)
insert @TokenVals values (rtrim(ltrim(@val)))
set @curpos = @nextcomma + 1
end
return
end
函数使用方法:
select * from dbo.Ufn_Split(’1+2+3+5+1’,’+’) table1
sql查询里 怎么拆分字符串(按“/”拆分)
先建立一个自定义函数,之个函数非常有用,建议收入自已的数据库
CREATE FUNCTION mysplit--将以某分隔符分段的字串,按指定的顺序号提取子串:
(@str nvarchar(2000),--源字串
@sn int, --提取序号
@Deli varchar(1) --分隔符
)
RETURNS varchar(100)
AS
BEGIN
declare @first int,@last int,@result varchar(1000),@sn0 int
select @sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while @sn0!=@sn
begin
select @sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
if @last-@first-1《0
set @result=’’
else
SET @RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN ( @RESULT )
END
查询方法:
DECLARE @A VARCHAR(100),@B VARCHAR(100),@C VARCHAR(100)
SELECT
@A=DBO.MYSPLIT(’A|B|C’,1,’|’) ,
@B=DBO.MYSPLIT(’A|B|C’,2,’|’) ,
@C=DBO.MYSPLIT(’A|B|C’,3,’|’)
SELECT @A,@B,@C
sql语句里有类似split的函数吗
可以直接使用,你试一下。我只用过instr,没对数据进行过处理如果不行你也可以使用where
instr(field,’"&x&",’)《》0(引号,逗号等自己处理下)
**L里有没有类似SPLIT的分割字符串函数
createfunctionf_split(@cvarchar(2000),@splitvarchar(2))
returns@ttable(colvarchar(20))
as
begin
while(charindex(@split,@c)《》0)
begin
insert@t(col)values(substring(@c,1,charindex(@split,@c)-1))
set@c=stuff(@c,1,charindex(@split,@c),’’)
end
insert@t(col)values(@c)
return
end
go
select*fromdbo.f_split(’dfkd,dfdkdf,dfdkf,dffjk’,’,’)
dropfunctionf_split
col
--------------------
dfkd
dfdkdf
dfdkf
dffjk
扩展资料
巧用**L内置函数分割字符串
createfunction(
@Stringnvarchar(4000),function
@Delimiternvarchar(100)
)
returns@ValueTabletable(int)
as
begin
declare@valuenvarchar(4000),@valnvarchar(4000)
declare@NextStringnvarchar(4000),@Posint,@NextPosint,@CommaChecknvarchar(1),@idint
set@value=@String
set@id=1
set@NextString=’’
set@CommaCheck=right(@value,1)
set@value=@value+@Delimiter+space(len(@Delimiter)-1)
set@Pos=charindex(@Delimiter,@value)
set@NextPos=1
while(@pos《》0)begin
set@NextString=substring(@value,1,@Pos-1)
set@val=@NextString
if@id》1set@val=substring(@val,len(@Delimiter),len(@val))
insertinto@ValueTable()VALUES(@val,@id)
set@value=substring(@value,@pos+1,LEN(@value))
set@NextPos=@Pos
set@pos=charindex(@Delimiter,@value)
set@id=@id+1
end
return
end
**L 如何把字符串拆分按固定值插入到表里
--方法一(用xml来拆分字符串)
Select id,type,name,app From
(
Select id,type, CAST( ’《v》’+REPLACE(name,’,’,’《/v》《v》’)+’《/v》’ as xml) As xml,app
From (select 1 As id,’A’ As type,’张三,李四,王五’ As name,0 As APP) S
) a outer apply ( Select x.y.value(’.’,’varchar(100)’) as name
From a.xml.nodes(’/v’) x(y)) b
--方法二(表值函数拆分字符串)
Create function f_split (@SourceSql varchar(8000),@StrSeprate varchar(2))
returns @temp table(col varchar(100))
as
begin
declare @ch as varchar(100)
set @SourceSql=@SourceSql+@StrSeprate
while(@SourceSql《》’’)
begin
set @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)
insert @temp values(@ch)
set @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),’’)
end
return
end
--调用
select 1 As id,’A’ As Type,Col As name,0 As app
from dbo.f_split(’张三,李四,王五’,’,’)
sql 分隔符
给你一个能处理分隔符的函数,这函数是sql server平台的,返回一个临时表
if exists(select name from sysobjects where id = object_id(N’jk01_f_split’))
drop function jk01_f_split
go
create function jk01_f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i》=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql《》’’
insert @temp values(@SourceSql)
return
end
go
用法
select * from jk01_f_split(字段名, ’分隔符’)
后续的汉字拼接显示,建议你用其它程序实现
Split(**L)
Split()是将字符串分割成数组;
sql是不是一个函数或者语句?如果向楼上说的是个函数的话应该是Split(**L())才对啊
楼主说的不是很清楚,**L没有单独出现的;
如果是个范例说明,**L代表一个查询的结果,那一个是查询出来的分割的代表,而非**L本身分成若干份:
做个范例楼主应该就明白了:
var str="a1-a2-a3-a4-a5";//假设有这样一个字符串;
sql的执行结果是"-";
var a=str.Split("-");
那么a这个数组应该是:
a=a1;
a=a2;
a=a3;
a=a4;
a=a5;
如果**L的运行结果是"-a";
var a=str.Split("-a");
那么a这个数组应该是:
a=a1
a=2;
a=3;
a=4;
a=5;
Oracle按指定字符拆分字符串-split函数
create or replace type strArray as table of varchar2(4020)
--此方法只能使用英文半角逗号(,)
create or replace function f_split(instr IN VARCHAR2) return strArray
as
l_tablen BINARY_INTEGER;
l_tab DBMS_UTILITY.uncl_array;
l_ret strArray:=strArray();
BEGIN
DBMS_UTILITY.comma_to_table(instr, l_tablen, l_tab);
FOR i IN 1 .. l_tablen LOOP
l_ret.EXTEND(1);
l_ret(i):=l_tab(i);
END LOOP;
return l_ret;
END;
select t.column_value as value from table(f_split(’a,b,付’)) t;
create or replace type strArray as table of varchar2(4020)
CREATE OR REPLACE FUNCTION f_split(p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN strArray IS
TYPE ret_cur IS REF CURSOR;
ret_cur1 ret_cur;
g_str strarray:=strarray();
l_sql varchar2(500):=’’;
BEGIN
l_sql :=’SELECT REGEXP_SUBSTR (’’’||p_str||’’’,’’+’’,1,LEVEL) as valuesa
FROM DUAL
CONNECT BY REGEXP_SUBSTR (’’’||p_str||’’’,’’+’’,1,LEVEL) IS NOT NULL’;
OPEN ret_cur1 FOR l_sql ;
FETCH ret_cur1 BULK COLLECT INTO g_str;
CLOSE ret_cur1;
RETURN g_str;
END f_split;
select * from table(f_split(’abc$d$e$’,’$’) );
更多文章:
表格trim函数(excel表格中卡号数字后面的空格怎么一起删除)
2026年3月27日 20:40
微信小程序商微信公众号制微信小程序开发制作(如何开发微信小程序微信宣传制作a)
2026年3月27日 19:40
this is me英语自我介绍小海报(this is me英语手抄报简单)
2026年3月27日 19:20
bigdecimal 除法(java中 BigDecimal的类型的除法)
2026年3月27日 17:40





