-->Title:Generating test data -->Author:happy_stone【不能飛的石頭】 -->Date :2009-10-19 12:27:08 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_GetStr]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_GetStr] GO --分段截取函数 CREATE FUNCTION dbo.f_GetStr( @s varchar(8000), --包含多个数据项的字符串 @pos int, --要获取的数据项的位置 @split varchar(10) --数据分隔符 )RETURNS varchar(100) AS BEGIN IF @s IS NULL RETURN(NULL) DECLARE @splitlen int SELECT @splitlen=LEN(@split+'a')-2 WHILE @pos>1 AND CHARINDEX(@split,@s+@split)>0 SELECT @pos=@pos-1, @s=STUFF(@s,1,CHARINDEX(@split,@s+@split)+@splitlen,'') RETURN(ISNULL(LEFT(@s,CHARINDEX(@split,@s+@split)-1),'')) END GO select dbo.[f_GetStr]('12-18',1,'-') select dbo.[f_GetStr]('12-18-19',2,'-') /* ---------------------------------------------------------------------------------------------------- 12(1 個資料列受到影響) ---------------------------------------------------------------------------------------------------- 18(1 個資料列受到影響)*/
set @s='12-18'
select substring(@s,1,charindex('-',@s)-1)
/*----------
12(1 行受影响)?
set @s='12-18'
select left(@s,patindex('%[^0-9]%',@s)-1)12
set @s='12-18'
select stuff(@s,charindex('-',@s)-1),1000,'')
set @s='12-18'
select left(@s,CHARINDEX('-',@s)-1)
select left('12-18',charindex('-','12-18')-1)
-->Author:happy_stone【不能飛的石頭】
-->Date :2009-10-19 12:27:08
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_GetStr]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_GetStr]
GO
--分段截取函数
CREATE FUNCTION dbo.f_GetStr(
@s varchar(8000), --包含多个数据项的字符串
@pos int, --要获取的数据项的位置
@split varchar(10) --数据分隔符
)RETURNS varchar(100)
AS
BEGIN
IF @s IS NULL RETURN(NULL)
DECLARE @splitlen int
SELECT @splitlen=LEN(@split+'a')-2
WHILE @pos>1 AND CHARINDEX(@split,@s+@split)>0
SELECT @pos=@pos-1,
@s=STUFF(@s,1,CHARINDEX(@split,@s+@split)+@splitlen,'')
RETURN(ISNULL(LEFT(@s,CHARINDEX(@split,@s+@split)-1),''))
END
GO
select dbo.[f_GetStr]('12-18',1,'-')
select dbo.[f_GetStr]('12-18-19',2,'-')
/*
----------------------------------------------------------------------------------------------------
12(1 個資料列受到影響)
----------------------------------------------------------------------------------------------------
18(1 個資料列受到影響)*/