一个截字符串的函数

问题来自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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7764484/viewspace-889205/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值