兰保明

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 1 set ANSI_NULLS ON
2 set QUOTED_IDENTIFIER ON
3 go
4
5
6 -- =============================================
7 -- Author: <兰保明>
8 -- Create date: <20110316>
9 -- Description: <根据机身号和用户发来的功能号信息得到功能号>
10 -- =============================================
11 ALTER FUNCTION [dbo].[get]
12 (
13 @szGpsSn nvarchar(11)
14 )
15 RETURNS nvarchar(80)
16 AS
17 BEGIN
18 declare @str varchar(8000)
19 declare @str2 varchar(8000)
20 SELECT @str=[Info] FROM [south].[dbo].[DetectInfo]
21 where [Info] LIKE '%IMEI%' AND [RTKSN] =@szGpsSn
22 set @str2=right(@str,17)
23 RETURN @str2
24 END

分割函数

 1 set ANSI_NULLS ON
2 set QUOTED_IDENTIFIER ON
3 go
4
5
6 ALTER function [dbo].[Get_StrArrayStrOfIndex]
7 (
8 @str varchar(1024), --要分割的字符串
9 @split varchar(10), --分隔符号
10 @index int --取第几个元素
11 )
12 returns varchar(1024)
13 as
14 begin
15 declare @location int
16 declare @start int
17 declare @next int
18 declare @seed int
19
20 set @str=ltrim(rtrim(@str))
21 set @start=1
22 set @next=1
23 set @seed=len(@split)
24
25 set @location=charindex(@split,@str)
26 while @location<>0 and @index>@next
27 begin
28 set @start=@location+@seed
29 set @location=charindex(@split,@str,@start)
30 set @next=@next+1
31 end
32 if @location =0 select @location =len(@str)+1
33 --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
34
35 return substring(@str,@start,@location-@start)
36 end
37 --调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)
38 --返回值:9

一个函数的使用

1 declare @sql nvarchar(100)
2 set @sql='A检测故障仪器B检测合格仪器C检测仪器台数E仓库入库仪器F仓库发货仪器G结算回款仪器H返回退货仪器I返回维修仪器J特殊授权仪器'
3 select substring(@sql,charindex('A',@sql),7)
4 select substring(@sql,charindex('C',@sql),7)
5 select substring(@sql,charindex('J',@sql),7)

posted on 2011-07-15 20:07  兰保明  阅读(167)  评论(0编辑  收藏  举报