SQL Server : 문자열에 숫자 문자만 있는지 테스트하는 방법
저는 SQL Server 2008에서 일하고 있습니다.문자열(varchar)에 숫자 문자(0-9)만 있는지 테스트하려고 합니다.저는 IS_NUMBERIC 함수가 거짓 결과를 줄 수 있다는 것을 알고 있습니다.(나의 데이터에는 $s 기호가 있을 수 있으며, 이 기호는 테스트를 통과하지 않아야 합니다.)그래서 저는 그 기능을 피하고 있습니다.
문자열에 숫자가 아닌 문자가 있는지 확인하는 테스트가 이미 있습니다.
some_column LIKE '%[^0123456789]%'
나는 유일한 숫자 테스트가 비슷한 것이 될 것이라고 생각하지만, 나는 빈칸을 그리고 있습니다.무슨 생각 있어요?
사용하다Not Like
where some_column NOT LIKE '%[^0-9]%'
데모
declare @str varchar(50)='50'--'asdarew345'
select 1 where @str NOT LIKE '%[^0-9]%'
SQL 2008 이상용 ISNUMERIC이라는 시스템 기능이 있습니다.예:
SELECT myCol
FROM mTable
WHERE ISNUMERIC(myCol)<> 1;
몇 가지 간단한 테스트를 해보고 문서도 자세히 조사했습니다.
ISNUMERIC returns 1 when the input expression evaluates to a valid numeric data type; otherwise it returns 0.
그 말은 예를 들어 꽤 예측이 가능하다는 뜻입니다.
-9879210433
지나가지만987921-0433
하지 않다.$9879210433
지나가지만9879210$433
하지 않다.
따라서 이 정보를 사용하여 유효한 통화 기호 목록을 기반으로 제거할 수 있습니다.+
&-
성격.
해결책:where some_column NOT LIKE '%[^0-9]%'
맞아요.
단 한 가지 중요한 사항:문자열 열 =에 대한 유효성 검사 추가''
(빈 문자열).이 시나리오는 다음과 같이 돌아올 것입니다.''
역시 유효한 숫자입니다.
효과가 있는 방법.위에서 사용하는 방식으로는 작동하지 않습니다.
declare @str varchar(50)='79136'
select
case
when @str LIKE replicate('[0-9]',LEN(@str)) then 1
else 0
end
declare @str2 varchar(50)='79D136'
select
case
when @str2 LIKE replicate('[0-9]',LEN(@str)) then 1
else 0
end
DECLARE @x int=1
declare @exit bit=1
WHILE @x<=len('123c') AND @exit=1
BEGIN
IF ascii(SUBSTRING('123c',@x,1)) BETWEEN 48 AND 57
BEGIN
set @x=@x+1
END
ELSE
BEGIN
SET @exit=0
PRINT 'string is not all numeric -:('
END
END
숫자만 있는 문자열을 찾으려고 했는데 구두점이나 다른 것은 없습니다.저는 마침내 여기서 통할 만한 답을 찾았습니다.
PATINDEX('%[^0-9]%', some_column) = 0을 사용하면 실제 숫자 문자열을 제외한 모든 것을 필터링할 수 있습니다.
선택한 답변이 작동하지 않습니다.
declare @str varchar(50)='79D136'
select 1 where @str NOT LIKE '%[^0-9]%'
해결책은 없지만 이 잠재적인 함정에 대해 알고 있습니다.과학적 표기인 'E'에 'D'자를 대입해도 마찬가지입니다.
효과가 있어요!!!
SELECT my_field FROM my_table WHERE REGEXP_LIKE(my_field, '[^0-9]') - only with char
SELECT my_field FROM my_table WHERE REGEXP_LIKE(my_field, '[0-9]') - only numbers
언급URL : https://stackoverflow.com/questions/28370295/sql-server-how-to-test-if-a-string-has-only-digit-characters
'programing' 카테고리의 다른 글
플로트 0에서 색상 값을 변환하는 중..1에서 바이트 0까지...255 (0) | 2023.09.27 |
---|---|
다른 테이블의 열을 업데이트하는 삽입 트리거 후 mysql (0) | 2023.09.27 |
선행 문자에 대한 AngularJs UI type ahead match (0) | 2023.09.27 |
.apply jQuery 기능은 무엇입니까? (0) | 2023.09.27 |
신속하게 좌표로 프로그래밍된 지도 앱을 여는 방법은? (0) | 2023.09.27 |