sqlsplit
⑴ 求sql split函数的用法
目前的sql没有自带split的函数,所以如果想用的话,需要自己先自建一个split的内嵌函数后,再使用;
这个函数最简单的用法,就是通过某个特定的分隔符,将一串字符串分割开来;
例如:split('a/b/c/d/e','/'),就会变成:
a
b
c
d
e
这个意思就是说,用''作为分隔符,分割'a/b/c/d/e'这个字符串;
具体如何构建split函数,可以参考一下这个:网页链接
当然还可以根据自己的需要,构建更复杂的函数,方便自己的使用;
⑵ 高手请进!sql查询语句:使用order by sum(字段) 和 split的问题
第一个问题:
可以用聚合函数的表达式排序,也可以给聚合函数取个另名来排序
select 字段1,max(字段2*字段3) as a,sum(字段2*字段3) as b from 表A ORDER BY B
第二个问题:
在SQL SERVER中 SPLIT不能用于分离字符串.
可以写个自定义函数,用来按某分隔符和顺序号提取字串.
字串拆分函数脚本:
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,5)
while @sn0!=@sn
begin
select @sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
SET @RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN ( @RESULT )
END
GO
字串拆分函数使用方法举例:
select DBO.mysplit('ABC|DEF|GHIJ|KLM|NOP|',3,'|')
输出:
GHIJ
⑶ sql语句里有类似split的函数吗
可以直接使用,你试一下。我只用过instr,没对数据进行过处理如果不行你也可以使用where
instr(field,'"&x&",')<>0(引号,逗号等自己处理下)
⑷ sql如何根据隔符分割字符串
数据库自带的substring()、charindex()函数,可以根据需要截取字符串,但并不能实现分割
自己写分割函数,以下可以参考:
createfunctionGetStr
(
@strvarchar(1024),--要分割的字符串
@splitvarchar(10),--分隔符号
@indexint--取第几个元素
)
returnsvarchar(1024)
as
begin
declare@locationint
declare@startint
declare@nextint
declare@seedint
set@str=ltrim(rtrim(@str))
set@start=1
set@next=1
set@seed=len(@split)
set@location=charindex(@split,@str)
while@location<>0and@index>@next
begin
set@start=@location+@seed
set@location=charindex(@split,@str,@start)
set@next=@next+1
end
if@location=0select@location=len(@str)+1
returnsubstring(@str,@start,@location-@start)
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
(5)sqlsplit扩展阅读
巧用SQL内置函数分割字符串
createfunction[dbo].[fn_char_splitbystr](
@Stringnvarchar(4000),function
@Delimiternvarchar(100)
)
returns@ValueTabletable([FValue]nvarchar(4000),[FSerial]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([FValue],[FSerial])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[0]=a1;
a[1]=a2;
a[2]=a3;
a[3]=a4;
a[4]=a5;
如果SQL的运行结果是"-a";
var a=str.Split("-a");
那么a这个数组应该是:
a[0]=a1
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;
⑺ oracle 如何用sql实现split功能
本函数可以将“目标字符串”以“指定字符串”进行拆分,并通过表结构返回结果。代码如下:
CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN str_split
PIPELINED
AS
v_length NUMBER := LENGTH(p_string);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(p_string, p_delimiter, v_start);
IF v_index = 0
THEN
PIPE ROW(SUBSTR(p_string, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;
RETURN;
END splitstr;
创建完毕后,我们来测试一下,例如执行如下SQL:
select * from table(splitstr('Hello,Cnblogs!',','));
其输出结果为一个两行的表,如下图:
⑻ SQL分段读取split
substring(1,2)从第1个字符取2位
substring(3,2)从第3个字符取2位
⑼ sql split
" csub like '|15%'" 不就可以了?
如果你想用ID的话就这样
"csub like '|" & id & "%'"
⑽ mssql 查询Split数据
首先,要说明一下,MSSQL是没有内置Split函数的,需要你自己去创建标量值函数的,创建标量值函数的t-sql脚本如下:
useyour_db_name
go
createfunctionSplit--创建标量值函数Split
(
@expressnvarchar(2000),--字符串表达式
@characterchar(1),--分隔字符
@positionint--获取数组第几个元素,下标从1开始
)
returnsnvarchar(100)
as
begin
declare@indexint=1;
declare@posint=0;
declare@tchnvarchar(50);
if@position<=0set@position=1;--下标从1开始
while@index<=len(@express)begin
ifsubstring(@express,@index,1)=@characterbegin
if@pos=@positionbreak;--已到达指定的索引
else--未到达
begin
set@tch='';
set@pos+=1;
end
end
ifsubstring(@express,@index,1)<>@character
set@tch+=substring(@express,@index,1);
set@index+=1;
end
return@tch;--返回指定索引的元素
end
go
--用法示例:
declare@strnvarchar(50)='0,5,0,ff,bb,ds,ym,dsf';
printdbo.Split(@str,',',4)--print'bb'
go