split函数 sql(求sql split函数的用法)
本文目录
- 求sql split函数的用法
- SQL怎么提取字段中最大值
- SQL 如何把字符串拆分按固定值插入到表里
- sqlserver有没有split函数
- SQL里有没有类似SPLIT的分割字符串函数
- Split(SQL)
- sql 分隔符
- sql语句里有类似split的函数吗
- sql查询里 怎么拆分字符串(按“/”拆分)
- Oracle按指定字符拆分字符串-split函数
求sql split函数的用法
目前的sql没有自带split的函数,所以如果想用的话,需要自己先自建一个split的内嵌函数后,再使用;
这个函数最简单的用法,就是通过某个特定的分隔符,将一串字符串分割开来;
例如:split(’a/b/c/d/e’,’/’),就会变成:
a
b
c
d
e
这个意思就是说,用’\’作为分隔符,分割’a/b/c/d/e’这个字符串;
具体如何构建split函数,可以参考一下这个:网页链接
当然还可以根据自己的需要,构建更复杂的函数,方便自己的使用;
SQL怎么提取字段中最大值
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))asbegindeclare @strlen int, @curpos int, @val varchar(255), @nextcomma intset @strlen = datalength(@Array)set @curpos = 0while @curpos 《= @strlenbeginset @nextcomma = charindex(@StrSeprate, @Array, @curpos)if @nextcomma = 0set @nextcomma = @strlen + 1set @val = substring(@Array,@curpos,@nextcomma - @curpos)insert @TokenVals values (rtrim(ltrim(@val)))set @curpos = @nextcomma + 1endreturnend
函数使用方法:
select * from dbo.Ufn_Split(’1+2+3+5+1’,’+’) table1
SQL 如何把字符串拆分按固定值插入到表里
--方法一(用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 appfrom dbo.f_split(’张三,李四,王五’,’,’)
sqlserver有没有split函数
SQL Server Split函数--Author:zc_0101 --说明:--支持分割符多字节--使用方法 --Select * FROM DBO.F_SQLSERVER_SPLIT(’1203401230105045’,’0’) --select * from DBO.F_SQLSERVER_SPLIT(’abc1234a12348991234’,’1234’) --Select * from DBO.F_SQLSERVER_SPLIT(’ABC’,’,’) 1 CREATE FUNCTION F_SQLSERVER_SPLIT(@Long_str NVARCHAR(MAX),@split_str NVARCHAR(100)) 2 RETURNS @tmp TABLE( 3 ID inT IDENTITY PRIMARY KEY, 4 short_str NVARCHAR(MAX) 5 ) 6 AS 7 BEGIN 8 DECLARE @short_str NVARCHAR(MAX),@split_str_length int,@split_str_Position_Begin int 9 SET @split_str_length = LEN(@split_str) 10 SET @Long_str=REPLACE(REPLACE(@Long_str,CHAR(10),’’),CHAR(13),’’)11 IF CHARINDEX(@split_str,@Long_str)=1 12 SET @Long_str=STUFF(@Long_str,1,@split_str_length,’’)13 IF CHARINDEX(@split_str,@Long_str)=014 INSERT INTO @tmp SELECT @Long_str 15 ELSE16 BEGIN17 WHILE 1》0 18 BEGIN 19 SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)20 SET @short_str=LEFT(@Long_str,@split_str_Position_Begin-1) 21 IF @short_str《》’’ INSERT INTO @tmp SELECT @short_str 22 SET @Long_str=STUFF(@Long_str,1,@split_str_Position_Begin+@split_str_length-1,’’)23 SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)24 IF @split_str_Position_Begin=0 25 BEGIN26 IF LTRIM(@Long_str)《》’’27 INSERT INTO @tmp SELECT @Long_str 28 BREAK29 END30 END 31 END32 RETURN 33 END
SQL里有没有类似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
扩展资料
巧用SQL内置函数分割字符串
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
Split(SQL)
Split()是将字符串分割成数组;sql是不是一个函数或者语句?如果向楼上说的是个函数的话应该是Split(SQL())才对啊楼主说的不是很清楚,SQL没有单独出现的;如果是个范例说明,SQL代表一个查询的结果,那一个是查询出来的分割的代表,而非SQL本身分成若干份:做个范例楼主应该就明白了:var str="a1-a2-a3-a4-a5";//假设有这样一个字符串;sql的执行结果是"-";var a=str.Split("-");那么a这个数组应该是:a=a1;a=a2;a=a3;a=a4;a=a5;如果SQL的运行结果是"-a";var a=str.Split("-a");那么a这个数组应该是:a=a1a=2;a=3;a=4;a=5;
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 endgo用法select * from jk01_f_split(字段名, ’分隔符’)后续的汉字拼接显示,建议你用其它程序实现
sql语句里有类似split的函数吗
可以直接使用,你试一下。我只用过instr,没对数据进行过处理如果不行你也可以使用whereinstr(field,’"&x&",’)《》0(引号,逗号等自己处理下)
sql查询里 怎么拆分字符串(按“/”拆分)
先建立一个自定义函数,之个函数非常有用,建议收入自已的数据库CREATE FUNCTION mysplit--将以某分隔符分段的字串,按指定的顺序号提取子串:
(@str nvarchar(2000),--源字串 @sn int, --提取序号 @Deli varchar(1) --分隔符 ) RETURNS varchar(100)ASBEGINdeclare @first int,@last int,@result varchar(1000),@sn0 intselect @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 endif @last-@first-1《0set @result=’’elseSET @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
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$’,’$’) );
更多文章:
promise all(找一首歌 有句是give you my heart to me)
2024年7月24日 06:12
perl二维数组(求perl代码 计算出这两个方框内的最大值和最小值~~)
2024年9月28日 07:35
对外开源什么意思?如何评价淘宝上各种售卖开源系统源代码的行为
2023年8月19日 06:00
浮点数四则运算与格式化输出python(7-17 jmu-python-输入输出-格式化输出字符串 python计算机编程题)
2024年7月3日 18:02
android scrollview(Android ScrollView在滚动中调用scrollTo(0,0)回到顶部无效)
2024年4月22日 16:20
304跟316不锈钢有什么区别(316不锈钢和304有什么区别)
2024年7月15日 20:35
matlab极坐标散点(MATLAB画极坐标图 半径460 角度360 每个角度每个半径步长上有一个散点数据 这样的图如何实现呢)
2024年6月29日 07:48
sort out your computer翻译(你的电脑怎么了翻译成汉语)
2024年7月21日 00:26
lol总决赛drx(英雄联盟S12全球总决赛FMVP介绍S12决赛FMVP是谁)
2024年7月5日 05:35
有哪些比较准确的手机地图导航软件?国内自驾游使用哪种导航最靠谱
2024年7月1日 07:52
promise翻译成中文(韩剧《是美男啊》中的歌曲《Promise》的歌词中文翻译)
2024年7月22日 04:45
freemarker if(freemarker怎么判断变量是否等于字符串)
2024年7月20日 11:19