[SQL] SQL은 VARCHAR에서 단지 숫자 값을
SQLSQL은 VARCHAR에서 단지 숫자 값을
나는 다음과 같은 몇 가지 필드가 말 :
abd738927
jaksm234234
hfk342
ndma0834
jon99322
입력 : VARCHAR를.
어떻게 화면이에서 단지 숫자 값을 수행합니다
738927
234234
342
0834
99322
그러나 데이터의 길이 변화, 캐스트 didnt 한 일 중 하나 때문에, 변환에 어떤 아이디어가없는 존재에 하위 문자열 시도 해 봤나?
해결법
-
==============================
1.여기 PATINDEX와 예는 다음과 같습니다
여기 PATINDEX와 예는 다음과 같습니다
select SUBSTRING(fieldName, PATINDEX('%[0-9]%', fieldName), LEN(fieldName))
이 (2) 수치가 모두 함께 그룹화하고, (3) 수치는 그 후 후속 문자가없는 필드에 숫자를해야합니다 (1) 가정합니다.
-
==============================
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.
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.나는 당신이 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.당신이 함수를 작성하지 않으 글쎄, 당신은이 같은 뭔가를 할 수 있습니다
당신이 함수를 작성하지 않으 글쎄, 당신은이 같은 뭔가를 할 수 있습니다
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.입력 테이블
입력 테이블
당신이 이미지에 위와 같이 데이터가있는 경우, 다음 쿼리 아래를 사용
select field_3 from table where PATINDEX('%[ ~`!@#$%^&*_()=+\|{};",<>/?a-z]%', field_3)=0
결과는 다음과 같이 될 것입니다
결과 테이블
-
==============================
7.
select substring( 'jaksm234234', patindex('%[0-9]%','jaksm234234'), LEN('jaksm234234')-patindex('%[0-9]%','jaksm234234')+2 )
-
==============================
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
from https://stackoverflow.com/questions/11333078/sql-take-just-the-numeric-values-from-a-varchar by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 내가 어떻게 MySQL의 데이터베이스에 직렬화 필드에서 검색 할 수 있습니까? (0) | 2020.06.13 |
---|---|
[SQL] 테이블 변수 @table를 선언해야합니다 (0) | 2020.06.13 |
[SQL] SQL Server는 24 시간에 의해 지속 시간 행을 분할 (0) | 2020.06.13 |
[SQL] 이 텍스트 필드에서 작동하지 왜 GROUP_CONCAT 또는 다른 이유에 길이 제한이 (0) | 2020.06.13 |
[SQL] 와일드 카드로 교체 MySQL은 (0) | 2020.06.13 |