ITPub博客

首页 > 数据库 > SQL Server > 一个截字符串的函数

一个截字符串的函数

原创 SQL Server 作者:wghao 时间:2007-01-09 18:36:06 0 删除 编辑
问题来自csdn的,大致的问题如下
营销03-1
营销03-3
计算机05-1
计算机05-2
工商04
营销13-1
营销13-2
工商14
化工11
营销21-1
营销21-2
工商31
化工31
要求作为传入参数到函数,在函数里实现一个截字符串的功能,当为‘营销03-2’时得‘03’,整个结果如:
03
03
05
05
04
13
13
14
11
21
21
31
31
解决方法:
(注:用到的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

*/[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7764484/viewspace-889205/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-19

  • 博文量
    57
  • 访问量
    231883