SQL只接受varchar中的数值

Jso*_*ham 11 sql t-sql sql-server sql-server-2008

假设我有以下几个字段:

abd738927
jaksm234234
hfk342
ndma0834
jon99322
Run Code Online (Sandbox Code Playgroud)

输入:varchar.

如何仅显示此数值以显示:

738927
234234
342
0834
99322
Run Code Online (Sandbox Code Playgroud)

尝试过子串但是数据的长度不一样,并且由于无法转换,任何想法都无法投射?

Sea*_*ean 16

以下是PATINDEX的示例:

select SUBSTRING(fieldName, PATINDEX('%[0-9]%', fieldName), LEN(fieldName))
Run Code Online (Sandbox Code Playgroud)

这假定(1)字段WILL具有数字,(2)数字全部组合在一起,以及(3)数字后面没有任何后续字符.

  • 而且,如果该字段没有数字怎么办? (2认同)

com*_*alt 5

仅提取数字(不使用while循环),并检查每个字符以查看是否为数字并将其提取

   Declare @s varchar(100),@result varchar(100)
    set @s='as4khd0939sdf78' 
    set @result=''

    select
        @result=@result+
                case when number like '[0-9]' then number else '' end from 
        (
             select substring(@s,number,1) as number from 
            (
                select number from master..spt_values 
                where type='p' and number between 1 and len(@s)
            ) as t
        ) as t 
    select @result as only_numbers 
Run Code Online (Sandbox Code Playgroud)