복붙노트

[SQL] SQL은 VARCHAR에서 단지 숫자 값을

SQL

SQL은 VARCHAR에서 단지 숫자 값을

나는 다음과 같은 몇 가지 필드가 말 :

abd738927
jaksm234234
hfk342
ndma0834
jon99322

입력 : VARCHAR를.

어떻게 화면이에서 단지 숫자 값을 수행합니다

738927
234234
342
0834
99322

그러나 데이터의 길이 변화, 캐스트 didnt 한 일 중 하나 때문에, 변환에 어떤 아이디어가없는 존재에 하위 문자열 시도 해 봤나?

해결법

  1. ==============================

    1.여기 PATINDEX와 예는 다음과 같습니다

    여기 PATINDEX와 예는 다음과 같습니다

    select SUBSTRING(fieldName, PATINDEX('%[0-9]%', fieldName), LEN(fieldName))
    

    이 (2) 수치가 모두 함께 그룹화하고, (3) 수치는 그 후 후속 문자가없는 필드에 숫자를해야합니다 (1) 가정합니다.

  2. ==============================

    2.(루프 동안 사용하지 않고)에만 번호를 추출하고 각각을 확인하고 모든 문자는 숫자인지 확인하고 추출

    (루프 동안 사용하지 않고)에만 번호를 추출하고 각각을 확인하고 모든 문자는 숫자인지 확인하고 추출

       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 
    
  3. ==============================

    3.

    DECLARE @NonNumeric varchar(1000) = 'RGI000Testing1000'
    DECLARE @Index int  
    SET @Index = 0  
    while 1=1  
    begin  
        set @Index = patindex('%[^0-9]%',@NonNumeric)  
        if @Index <> 0  
        begin  
            SET @NonNumeric = replace(@NonNumeric,substring(@NonNumeric,@Index, 1), '')  
        end  
        else    
            break;   
    end     
    select @NonNumeric -- 0001000
    
  4. ==============================

    4.나는 당신이 VBA의 발 () 함수를 원하는 것 같아요. ISNUMERIC으로 달성하기 쉬운 정도 ()

    나는 당신이 VBA의 발 () 함수를 원하는 것 같아요. ISNUMERIC으로 달성하기 쉬운 정도 ()

    create function Val 
    (
        @text nvarchar(40)
    ) 
    returns float
    as begin
        -- emulate vba's val() function
        declare @result float 
        declare @tmp varchar(40)
    
        set @tmp = @text
        while isnumeric(@tmp) = 0 and len(@tmp)>0 begin
            set @tmp=left(@tmp,len(@tmp)-1)
        end
        set @result = cast(@tmp as float)
    
        return @result
    end
    
  5. ==============================

    5.당신이 함수를 작성하지 않으 글쎄, 당신은이 같은 뭔가를 할 수 있습니다

    당신이 함수를 작성하지 않으 글쎄, 당신은이 같은 뭔가를 할 수 있습니다

    cast(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
    replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
    replace(replace(replace(replace(replace(replace(replace(replace(replace(YOUR_COLUMN
    ,'A',''),'B',''),'C',''),'D',''),'E',''),'F',''),'G',''),'H',''),'I',''),'J','')
    ,'K',''),'L',''),'M',''),'N',''),'O',''),'P',''),'Q',''),'R',''),'S',''),'T','')
    ,'U',''),'V',''),'W',''),'X',''),'Y',''),'Z',''),'$',''),',',''),' ','') as float) 
    
  6. ==============================

    6.입력 테이블

    입력 테이블

    당신이 이미지에 위와 같이 데이터가있는 경우, 다음 쿼리 아래를 사용

    select field_3 from table where PATINDEX('%[ ~`!@#$%^&*_()=+\|{};",<>/?a-z]%', field_3)=0
    

    결과는 다음과 같이 될 것입니다

    결과 테이블

  7. ==============================

    7.

    select substring(
                    'jaksm234234',
                    patindex('%[0-9]%','jaksm234234'),
                    LEN('jaksm234234')-patindex('%[0-9]%','jaksm234234')+2
                    )
    
  8. ==============================

    8.문자열에서 숫자 만 추출합니다. 반환 내부의 숫자 모두 포함 된 문자열. 예 : this1is2one345long6789number는 123456789를 반환합니다

    문자열에서 숫자 만 추출합니다. 반환 내부의 숫자 모두 포함 된 문자열. 예 : this1is2one345long6789number는 123456789를 반환합니다

    CREATE FUNCTION [dbo].[GetOnlyNumbers] (@Temp VARCHAR(1000))
    

    RETURNS VARCHAR (1000) 시작될

        DECLARE @KeepValues AS VARCHAR(50)
        SET @KeepValues = '%[^0-9]%'
        WHILE PATINDEX(@KeepValues, @Temp) > 0
            SET @Temp = STUFF(@Temp, PATINDEX(@KeepValues, @Temp), 1, '')
    
        RETURN @Temp
    END
    
  9. from https://stackoverflow.com/questions/11333078/sql-take-just-the-numeric-values-from-a-varchar by cc-by-sa and MIT license