关于“字符串判断”求助
在SQL2K中我想从一些字符串里面截取我需要的东西,比如‘脊椎L3-T4’,‘脊椎C3-L1’等类似的字符串中截取前面有用的中文信息,但是这些字符串长度不固定,没有固定的分隔符,要在存储过程中实现,要用什么语法?具体要怎么写?请高手指点,谢谢。 问题点数:0、回复次数:4Top
1 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-04 15:04:05 得分 0
1,建立自定义函数
CREATE function getLeftChinese(@a Nvarchar(100))
returns Nvarchar(2000)
as
begin
declare @i int,@len int,@b Nvarchar(100)
set @i=1
set @b=''
set @len=len(@a)
while @i<=@len
begin
if ascii(right(@a,@i))<128
set @b=left(@a,@len-@i)
set @i=@i+1
end
return @b
end
2,
select dbo.getLeftChinese(字段名) from 你的表Top
2 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-04 15:05:15 得分 0
1,建立自定义函数
CREATE function getLeftChinese(@a Nvarchar(100))
returns Nvarchar(2000)
as
begin
declare @i int,@len int,@b Nvarchar(100)
set @i=1
set @b=''
set @len=len(@a)
while @i<=@len
begin
if ascii(right(@a,@i))<128
set @b=left(@a,@len-@i)
set @i=@i+1
end
return @b
end
2,
select dbo.getLeftChinese(字段名) from 你的表Top
3 楼tj_dns(愉快的登山者)回复于 2003-08-04 15:14:31 得分 0
declare @s varchar(100)
set @s = '脊椎L3-T4'
declare @i int
set @i = 1
while ascii(substring(@s,@i,1)) > 127
begin
set @i = @i + 1
end
select left(@s,@i-1)
Top
4 楼tj_dns(愉快的登山者)回复于 2003-08-04 15:19:19 得分 0
create function f2 (@s varchar(100))
RETURNS varchar(100)
as
begin
declare @i int
set @i = 1
while ascii(substring(@s,@i,1)) > 127
begin
set @i = @i + 1
end
return (left(@s,@i-1))
end
select dbo.f2('脊椎L3-T4')Top
5 楼tj_dns(愉快的登山者)回复于 2003-08-04 15:24:24 得分 0
create function f2 (@s varchar(100))
RETURNS varchar(100)
as
begin
declare @i int
set @i = 1
while ascii(substring(@s,@i,1)) > 127
begin
set @i = @i + 1
end
return (left(@s,@i-1))
end
select dbo.f2('脊椎L3-T4')Top
6 楼zjcxc(邹建)回复于 2003-08-04 22:14:28 得分 0
create procedure aa @str varchar(8000),@re varchar(8000) output
as
declare @i int
set @i=1
while ascii(substring(@str,@i,1)) > 127
set @i=@i+1
set @re=left(@str,@i-1)
go
--调用
declare @str varchar(8000)
exec aa '脊椎L3-T4',@str out
print @str
--删除存储过程
drop proc aaTop




