SQL server拆分字段的SQL语句

SQL server拆分字段的SQL语句,第1张

SQL语句中拆分字段

一、语句实现的是将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’,’|’)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6680149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存