[SQL] SQL Server의 IsInteger위한 최고의 상응
SQLSQL Server의 IsInteger위한 최고의 상응
필드의 값이 (2000/2005/2008) SQL Server의 정수 여부를 결정하는 가장 좋은 방법은 무엇입니까?
가능성 정수로 변환 할 것입니다 다양한 형식에 대한 사실 ISNUMERIC으로 돌아갑니다. 예를 들면 '15, 000 '및 '15 .1'을 포함한다.
당신은 문처럼 사용할 수 있지만, 단지 잘 자리의 미리 정해진 번호가 필드 작업에 나타납니다 ...
select * where zipcode like '[0-9][0-9][0-9][0-9][0-9]'
나는 시도 try / catch 블록 내에서의 int에 VARCHAR 매개 변수를 변환하는 사용자 정의 함수를 쓸 수 있지만, 나는 누군가가이 목표를 달성하기 위해 어떤 succient 방법을 가로 질러왔다 있는지 확인하기 위해 지역 사회와 함께 확인 해요 - 바람직 할 수 다른 객체를 생성하지 않고 SQL 구문의 where 절 내에서 사용할 수.
해결법
-
==============================
1.한 접근법은
한 접근법은
zipcode NOT LIKE '%[^0-9]%'
더블 네거티브, 그들을 '사랑에 도착!
-
==============================
2.핸들의 부정적인 늦은 항목
핸들의 부정적인 늦은 항목
ISNUMERIC(zipcode + '.0e0') --integer ISNUMERIC(zipcode + 'e0') --decimal
보기를 참조하십시오
-
==============================
3.SQL 서버 2005 +, 내가 CLR을 활성화하고 지원 정규 표현식에에 함수를 만드는 것입니다. SQL 서버 2000의 경우, 같은 일을하기 위해 UDF를 작성하는이 문서를 참조하십시오.
SQL 서버 2005 +, 내가 CLR을 활성화하고 지원 정규 표현식에에 함수를 만드는 것입니다. SQL 서버 2000의 경우, 같은 일을하기 위해 UDF를 작성하는이 문서를 참조하십시오.
^ \ D {5} $ : 그럼 정규식을 사용하십시오
-
==============================
4.이 표현은 정수 값과 다르게 0 1 범
이 표현은 정수 값과 다르게 0 1 범
floor((floor(abs(zipcode)))/abs(zipcode))
-
==============================
5.왜 그냥 다음을 사용할 수 있습니까? 나는 실패 어떤 경우를 찾아 볼 수 없습니다.
왜 그냥 다음을 사용할 수 있습니까? 나는 실패 어떤 경우를 찾아 볼 수 없습니다.
DECLARE @TestValue nvarchar(MAX) SET @TestValue = '1.04343234e5' SELECT CASE WHEN ISNUMERIC(@TestValue) = 1 THEN CASE WHEN ROUND(@TestValue,0,1) = @TestValue THEN 1 ELSE 0 END ELSE null END AS Analysis
-
==============================
6.나는 다른 StackO 질문에이에 대한 완벽한 답을 내놓았다. 또한 한 사용자가 여기에 제안처럼 당신이 ".0e0"를 사용할 수 없습니다 증명한다. 그것은 CLR 또는 비 스칼라 함수없이 그렇게한다. 그것을 확인하시기 바랍니다 : https://stackoverflow.com/a/10645764/555798
나는 다른 StackO 질문에이에 대한 완벽한 답을 내놓았다. 또한 한 사용자가 여기에 제안처럼 당신이 ".0e0"를 사용할 수 없습니다 증명한다. 그것은 CLR 또는 비 스칼라 함수없이 그렇게한다. 그것을 확인하시기 바랍니다 : https://stackoverflow.com/a/10645764/555798
-
==============================
7.2008 SQL로 이동 한 후, 나는 고민했다 ISNUMERIC ( '\ 8')가 true를 반환하지만 정수로 캐스팅 할 때 오류를 던지고. 분명히 슬래시 엔 원에 유효한 통화가 - (참조 http://www.louiebao.net/blog/200910/isnumeric/)
2008 SQL로 이동 한 후, 나는 고민했다 ISNUMERIC ( '\ 8')가 true를 반환하지만 정수로 캐스팅 할 때 오류를 던지고. 분명히 슬래시 엔 원에 유효한 통화가 - (참조 http://www.louiebao.net/blog/200910/isnumeric/)
내 솔루션이었다
case when ISNUMERIC(@str) > 0 and not rtrim(@str) LIKE '[^0-9]%' and not rtrim(@str) LIKE '%[^0-9]' and not rtrim(@str) LIKE '[^0-9]%' then rtrim(@str) else null end
-
==============================
8.
CREATE TABLE MY_TABLE(MY_FIELD VARCHAR(50)) INSERT INTO MY_TABLE VALUES('9.123'),('1234567'),('9'),('2147483647'),('2147483647.01'),('2147483648'), ('2147483648ABCD'),('214,7483,648') SELECT * FROM MY_TABLE WHERE CHARINDEX('.',MY_FIELD) = 0 AND CHARINDEX(',',MY_FIELD) = 0 AND ISNUMERIC(MY_FIELD) = 1 AND CONVERT(FLOAT,MY_FIELD) / 2147483647 <= 1 DROP TABLE MY_TABLE
-
==============================
9.나는 Case 문을 사용했다 : 전송 (케이스 수량 / [# 일] = 전송 (수량 / [# 일이어서로서 INT (수량 / [# 일]) 그렇지 0 엔드 ABS) 정수)
나는 Case 문을 사용했다 : 전송 (케이스 수량 / [# 일] = 전송 (수량 / [# 일이어서로서 INT (수량 / [# 일]) 그렇지 0 엔드 ABS) 정수)
-
==============================
10.시험에 대한 입력 값은 정수 또는 우리는 SQL 서버의 SQL_VARIANT_PROPERTY 기능을 사용할 수 있습니다 여부.
시험에 대한 입력 값은 정수 또는 우리는 SQL 서버의 SQL_VARIANT_PROPERTY 기능을 사용할 수 있습니다 여부.
다음 SQL 스크립트 입력을하고 데이터 유형은 정수로 밝혀 여부를 테스트합니다
declare @convertedTempValue bigint, @inputValue nvarchar(255) = '1' --Change '1' to any input value set @convertedTempValue = TRY_PARSE(@inputValue as bigint) --we trying to convert to bigint declare @var3 nvarchar(255) = cast (SQL_VARIANT_PROPERTY(@convertedTempValue,'BaseType') as nvarchar(255)) --we using SQL_VARIANT_PROPERTY to find out datatype if ( @var3 like '%int%') begin print 'value is integer' end else begin print 'value is non integer' end go
-
==============================
11.어쩌면 당신은 정수 데이터 유형의 데이터를 정수 저장해야합니다.
어쩌면 당신은 정수 데이터 유형의 데이터를 정수 저장해야합니다.
from https://stackoverflow.com/questions/2358147/best-equivalent-for-isinteger-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 로 ... 파티션 (이상 ROW_NUMBER ()의 sqlite가 동등한? (0) | 2020.05.13 |
---|---|
[SQL] 2005 SQL - 열은 여러 번 지정 (0) | 2020.05.13 |
[SQL] 나는 IGNORE_DUP_KEY는 기본 키에 설정할 수 있습니까? (0) | 2020.05.13 |
[SQL] 합니까 UNION ALL 결과 집합의 순서를 보장 [중복] (0) | 2020.05.13 |
[SQL] SQL 서버 업데이트 그룹에 의해 (0) | 2020.05.13 |