目标:从 ' a 1 b 2cs 3 ' 中得到 123
CREATE FUNCTION uf_Num
(
@Text NVARCHAR(50)
)
RETURNS INT
AS
BEGIN
SET @Text = UPPER(REPLACE(@Text, ' ', ''))
DECLARE @I INT, @N INT, @START INT, @END INT, @CHAR CHAR, @NUM NVARCHAR(10), @UNIT INT
SET @N = LEN(@Text)
SET @I = 1
SET @NUM = ''
WHILE @N >= @I
BEGIN
SET @CHAR = SUBSTRING(@Text, @I, 1)
IF CHARINDEX(@CHAR, '0123456789') > 0
SET @NUM = @NUM + @CHAR
SET @I = @I + 1
END
SET @UNIT = CONVERT(INT, @NUM)
IF @UNIT <= 0
BEGIN
IF @Text = 'TWOUNIT'
SET @UNIT = 2
ELSE
SET @UNIT = 1
END
RETURN @UNIT
END
调用:select dbo.uf_Num(' a 1 b 2cs 3 ' )