sql 中,取得一个字符串中的数字,
如字符串'adfasdf234dafd2fd' 返回其中的数字2342

解决方案 »

  1.   

    早几天写过declare @s varchar(30)
    set @s='adfasdf234dafd2fd' 
    while PATINDEX('%[^0-9]%',@s)>0
    set @s=stuff(@s,PATINDEX('%[^0-9]%',@s),1,'')
    print @s
      

  2.   

    -- 從字符型值中取數字函數
    -- 作者:yoncen 
    CREATE FUNCTION dbo.get_numeric(@string VARCHAR(200))
    RETURNS VARCHAR(200)
    AS
    BEGIN
      DECLARE @nLen INT
      DECLARE @number VARCHAR(10)
      DECLARE @SUBSTRING_VALUE VARCHAR(200)
      DECLARE @RETURNVALUE VARCHAR(200)
      SELECT @RETURNVALUE = ''
      SELECT @number = '1234567890'
      SELECT @nLen = LEN(@string)
      WHILE (NOT @nLen < 0)       
      BEGIN
             SELECT @SUBSTRING_VALUE = CHARINDEX(SUBSTRING(@string,@nLen,1),@number)
             IF (NOT @SUBSTRING_VALUE = 0)
             BEGIN
                     SELECT @RETURNVALUE = RIGHT(CONVERT(VARCHAR,@SUBSTRING_VALUE),1)+
                                                     LTRIM(@RETURNVALUE)
             END
             SELECT @nLen = @nLen-1
      END
    RETURN (@RETURNVALUE)          
    END      PRINT dbo.get_numeric('dD2212135DF210SF12')
    計算結果為:
    -------------------------------------------------------
    221213521012