急需截字符串的函数
营销03-2
营销03-1
营销03-3
工商04
化工05
这样的两个字符串,要求作为传入参数到函数,在函数里实现一个截字符串的功能,当为营销03-2时得03,当为工商04(化工05),得04(05),即函数输出结果为
03
03
03
04
05
在sql server 2000里用function实现
各位大虾帮帮忙!
------解决方案-------------------- create table tab1
(
F_code varchar(10),
)
insert into tab1 select '营销01-1 '
insert into tab1 select '营销03-2 '
insert into tab1 select '计算机05-1 '
insert into tab1 select '计算机05-2 '
insert into tab1 select '自动化03-1 '
insert into tab1 select '自动化03-2 '
insert into tab1 select '工商04 '
insert into tab1 select '化工05 '
insert into tab1 select '营销13-1 '
insert into tab1 select '营销13-3 '
insert into tab1 select '工商14 '
insert into tab1 select '化工10 '
select substring(F_code,charindex( '0 ',F_code),2) from tab1 where charindex( '0 ',F_code)> 0 and (charindex( '0 ',F_code) <charindex( '1 ',F_code) or charindex( '1 ',F_code)=0)
union all
select substring(F_code,charindex( '1 ',F_code),2) from tab1 where charindex( '1 ',F_code)> 0 and (charindex( '0 ',F_code)> charindex( '1 ',F_code) or charindex( '0 ',F_code)=0)
drop table tab1
------解决方案--------------------根据楼主的意思,看一下方法(注:用到的Fun_GetNo()函数可以根据实际需要灵活修改):
CREATE TABLE T(Tname nvarchar(20))
INSERT INTO T
SELECT '营销03-1 ' UNION ALL
SELECT '营销03-3 ' UNION ALL
SELECT '计算机05-1 ' UNION ALL
SELECT '计算机05-2 ' UNION ALL
SELECT '工商04 ' UNION ALL
SELECT '营销13-1 ' UNION ALL
SELECT '营销13-2 ' UNION ALL
SELECT '工商14 ' UNION ALL
SELECT '化工11 ' UNION ALL
SELECT '营销21-1 ' UNION ALL
SELECT '营销21-2 ' UNION ALL
SELECT '工商31 ' UNION ALL
SELECT '化工31 '
GO
CREATE FUNCTION Fun_GetNo(@Input nvarchar(20))
RETURNS nvarchar(10)
AS
BEGIN
DECLARE @Return nvarchar(10)
SET @Return= ' '
WHILE len(@Input)> 0
BEGIN
IF LEFT(@Input,1) BETWEEN '0 ' AND '9 '
SET @Return=@Return+LEFT(@Input,1)
ELSE IF @Return <> ' '
BREAK
IF LEN(@Input)> 0 SET @Input=RIGHT(@Input,LEN(@Input)-1)
END
RETURN @Return
END
GO
SELECT *,dbo.Fun_GetNo(Tname) 编号 FROM T
DROP TABLE T
DROP FUNCTION Fun_GetNo
/*
结果:
Tname 编号
---------------------
营销03-1 03
营销03-3 03
计算机05-1 05
计算机05-2 05
工商04 04
营销13-1 13
营销13-2 13
工商14 14
化工11 11
营销21-1 21
营销21-2 21
工商31 31
化工31 31
*/