一、语句实现的是将sql表中某个特定的字段按照字段内容中的标志拆分成多个字段。下面的实例是将classname字段中的内容以“->”为分隔符拆分为两个部分。
select
ID ,
ClassID = PARSENAME(replace(ClassName,'->' , '.'), 2) ,
StyleID = PARSENAME(replace(ClassName,'->' , '.'), 1)
from tb
二、拆分之前的表格式:
ID classname。
1、 吃嫩草->东湖二等分 。
2、 的年覅->从丁俊晖v刹。
3、 觉得->督促。
4 、和长度->陈代工厂 。
5、 督促vui->大合唱。
三、拆分后的表格式:
ID ClassID StyleID。
1 、吃嫩草 东湖二等分。
2 、的年覅 从丁俊晖v刹。
3 、觉得 督促。
4、和长度 陈代工厂。
5、 督促vui 大合唱。
四、同样的方法,如果要分成三个、四个或者更多的字段,只需要修改代码第三四行的代码,此方法仅限将某一字段内的内容按照同一个分隔符拆分。
省和市之间是有 空格分隔的对吗?如果是的话 你可以截取啊
先判断空格的位置 position(' 'in column_name)
再截取字符串就可以了
substr(column_name,1,position('' in column_name)) --省
substr(column_name,position('' in column_name)+1) --市
一般来讲都是从程序读取出来数据后在进行分割。如果你非要从数据库查询出来就分割好,在sql server下只能去写split函数
if object_id(’f_split’) is not null
drop function f_split
go
create function f_split(@aString varchar(8000),@pattern varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
--说明:@aString,字符串,如a:b:c;@pattern,分隔标志,如 :
as
begin
declare @i int
set @aString=rtrim(ltrim(@aString))
set @i=charindex(@pattern,@aString)
while @i>=1
begin
insert @temp values(left(@aString,@i-1))
set @aString=substring(@aString,@i+1,len(@aString)-@i)
set @i=charindex(@pattern,@aString)
end
if @aString<>’’
insert @temp values(@aString)
return
end
--在下上述代码,然后就可以用了,例子:
select * from dbo.f_split(’0|418001|418002|418002’,’|’)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)