22,209
社区成员
发帖
与我相关
我的任务
分享
create table test (chr varchar(1000))
insert into test values(
'123456789序号 急诊医学科243986程里 015902ZZZZZZZZZZZZZZZ一般物理降温 次 ')
insert into test values(
'123456789 急诊医学科243986程里 000108X00041650100010注射用头孢西丁钠 支 ')
分拆数据到列
declare @t table (col varchar(50))
insert into @t
select 'aa,bb,bb' union all
select 'AAA,BBB' union all
select 'AAA'
drop table #t
declare @i int,@s varchar(1000)
set @i=0
select col into #t from @t
while @@rowcount>0
begin
set @i=@i+1
set @s='alter table #t add col'+cast(@i as varchar)+' varchar(100)'
exec(@s)
set @s='update #t set col'+cast(@i as varchar)+'=left(col,charindex('','',col+'','')-1),
col=stuff(col,1,charindex('','',col+'',''),'''')
where col>'''''
print @s
exec(@s)
end
select * from #t
select dbo.f_t(chr,',') from test;
alter function f_t(@v varchar(1000),@split char(1))
returns varchar(1000)
as
begin
declare @ret varchar(1000);
declare @i int;
declare @ts varchar(100);
set @ret='';
set @v=LTRIM(@v)+' ';
while LEN(@v)>0
begin
set @i=PATINDEX ('%[ ]%',@v);
set @ts=LEFT(@v,@i);
set @ret+=@split+@ts;
set @v=RIGHT(@v,LEN(@v)-@i+1);
set @v=ltrim(@v);
end
return @ret;
end
/*
----------------------------------------------------------------------------
,123456789序号 ,急诊医学科243986程里 ,015902ZZZZZZZZZZZZZZZ一般物理降温 ,次
,123456789 ,急诊医学科243986程里 ,000108X00041650100010注射用头孢西丁钠 ,支
*/
create table test (f_getstr(chr) varchar(1000))
insert into test values(
'123456789序号 急诊医学科243986程里 015902ZZZZZZZZZZZZZZZ一般物理降温 次 ')
insert into test values(
'123456789 急诊医学科243986程里 000108X00041650100010注射用头孢西丁钠 支 ')
create function f_getstr(@str varchar(1000))
returns varchar(1000)
begin
declare @str1 varchar(1000)
set @str1=''
set @str=rtrim(ltrim(@str))
while charindex(' ',@str)>0
begin
set @str1=@str1+'.'+left(@str,charindex(' ',@str)-1)
set @str=ltrim(right(@str,len(@str)-charindex(' ',@str)))
end
return stuff(@str1,1,1,' ')+'.'+@str
end
select parsename(dbo.f_getstr(chr),4) as a,parsename(dbo.f_getstr(chr),3) as b,
parsename(dbo.f_getstr(chr),2) as c,parsename(dbo.f_getstr(chr),1) as d
from test
drop function f_getstr
/*
a b c d
--------------- --------------------------- ----------------------------------------------- --------------
123456789序号 急诊医学科243986程里 015902ZZZZZZZZZZZZZZZ一般物理降温 次
123456789 急诊医学科243986程里 000108X00041650100010注射用头孢西丁钠 支