例如我一张表中的数据 id  name 
 1  张三 身份证 123456789123456 阿斯蒂芬 
 2   李斯 78908978373673 试试 
 3  王五 1236423 aa 
 4  9875648254236 
需要用语句来提取出里面超过10位的数字,存储过程也行,怎么提取?

解决方案 »

  1.   

    提取数字
    IF OBJECT_ID('dbo.fn_get_number') IS NOT NULL
    DROP FUNCTION dbo.fn_get_number
    GO
    CREATE FUNCTION dbo.fn_get_number(@S VARCHAR(100))
    RETURNS VARCHAR(100)
    AS
    BEGIN
    WHILE PATINDEX('%[^0-9]%',@S) > 0
    BEGIN
    set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
    END
    RETURN @S
    END
    GO
    declare @tb table (id int,name nvarchar(120))
    insert into @tb select 1,'张三 身份证 123456789123456 阿斯蒂芬 '
    union all select 2,'李斯 78908978373673 试试'
    union all select 3,'王五 1236423 aa '
    union all select 4,'9875648254236'select dbo.fn_get_number(name) from @tb
    select * from @tb where LEN(dbo.fn_get_number(name))>=10
    GO
      

  2.   

    select id ,name
    from 表A
    where len(name)>10不知道这个是不是你想要的结果
      

  3.   

    SELECT *
    FROM TB 
    WHERE PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', NAME)>0