--提取数字
IF OBJECT_ID('DBO.GET_NUMBER') IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER
GO
CREATE FUNCTION DBO.GET_NUMBER(@S VARCHAR(100))
RETURNS 100)
AS
BEGIN
WHILE PATINDEX(%[^0-9]%',@S) > 0
set @s=stuff(@s,patindex(@s),1,0)">'')
END
RETURN @S
测试PRINT DBO.GET_NUMBER(呵呵ABC-12,3ABC')
123
--------------------------------------------------------------------提取英文DBO.GET_STRFUNCTION DBO.GET_STR
FUNCTION DBO.GET_STR(%[^a-z]%PRINT DBO.GET_STR(呵呵ABC123ABC提取中文DBO.CHINA_STRFUNCTION DBO.CHINA_STR
FUNCTION DBO.CHINA_STR(NVARCHAR(%[^吖-座]%SET @S = STUFF(@S,0)">@S),NPRINT DBO.CHINA_STR(过滤重复字符DBO.disTINCT_STRFUNCTION DBO.disTINCT_STR
FUNCTION DBO.disTINCT_STR(100),0)">@SPLIT 50))
IF IS NULL RETURN(NULL)
DECLARE @NEW 50),0)">@INDEX INT,0)">@TEMP 50)
IF LEFT(1)<>@SPLIT
= @SPLIT+RIGHT(@SCHARINDEX(@SPLIT,0)">@S)>0 AND LEN(<>1
@INDEX @S)
@TEMP = @INDEX+@SPLIT)))
NULL
@NEW ISNULL(@NEW,0)">'')@TEMP
ELSE
REPLACE(@TEMP,0)">@SPLIT),0)">@SPLIT))-RETURN RIGHT(@NEW)-1),255)">LEN(1))1)
PRINT DBO.disTINCT_STR(A,A,B,C,,128)">A,C过滤重复字符2DBO.disTINCT_STR2FUNCTION DBO.disTINCT_STR2
FUNCTION DBO.disTINCT_STR2(varchar(8000))
@NEW+LEFT(@NEW
SELECT DBO.disTINCT_STR2(AABCCDABCDGO
DBO.SPLIT_STRFUNCTION DBO.SPLIT_STR
FUNCTION DBO.SPLIT_STR(
8000), 包含多个数据项的字符串int, 要获取的数据项的位置10) 数据分隔符
)
@SPLITLEN int
SELECT @SPLITLENA')2
WHILE 1 @SPLIT)=@SPLITLEN,255)">RETURN(ISNULL(''))
PRINT DBO.SPLIT_STR(AA|BB|CC2,0)">|--
GO