+ -
当前位置:首页 → 问答吧 → 求一个分割函数

求一个分割函数

时间:2011-12-14

来源:互联网

以前找到过一个,没有保存下来,现在找了好久都没有找到,
函数效果为

初始值:
500ml*1
10g*10
0.5DF:ASD*10
10JSH*10*10

结果:
500ml
10g
0.5DF:ASD
10JSH

始终取第一个*号前面的值 

作者: talentmykaka   发布时间: 2011-12-14

SQL code
select substring(初始值,1,charindex('*',初始值)-1) from tb

作者: ssp2009   发布时间: 2011-12-14

貌似很久以前回答过这个问题!

作者: qianjin036a   发布时间: 2011-12-14

SQL code
create table tb(name varchar(10))
insert into tb
select '500ml*1' union
select '10g*10'

select substring(name,1,charindex('*',name)-1) from tb

/*
----------
500ml
10g

作者: ssp2009   发布时间: 2011-12-14

SQL code
create table tb(gg varchar(20))
insert into tb select '500ml*1'
insert into tb select '10g*10'
insert into tb select '0.5DF:ASD*10'
insert into tb select '10JSH*10*10'
go
create function getabovestar
(@gg nvarchar(20))
returns nvarchar(20)
as
begin
return (case when charindex('*',@gg)>0 then left(@gg,charindex('*',@gg)-1) else @gg end)
end
go
select dbo.getabovestar(gg) from tb
/*
--------------------
500ml
10g
0.5DF:ASD
10JSH

(4 行受影响)

*/
go
drop table tb

作者: qianjin036a   发布时间: 2011-12-14

SQL code
create table #tb
(
strs varchar(50)
)

insert into #tb values ('500ml*1' )  
insert into #tb values ('10g*10' ) 
insert into #tb values ('0.5DF:ASD*10' ) 
insert into #tb values ('10JSH*10*10')

select * from #tb

select SUBSTRING(strs,1,CHARINDEX('*',strs)-1) from #tb


--------------------------------------------------
500ml
10g
0.5DF:ASD
10JSH

(4 行受影响)

作者: szstephenzhou   发布时间: 2011-12-14

方法2

SQL code

select LEFT(strs,CHARINDEX('*',strs)-1) from #tb


--------------------------------------------------
500ml
10g
0.5DF:ASD
10JSH

(4 行受影响)


作者: szstephenzhou   发布时间: 2011-12-14