2010-06-21 8 views
0
나는 이런 식으로 뭔가를 시도

:nvarchar를 int로 변환 할 수 있습니까?

select PREPRO = case when (isnumeric(PREPRO) = 1 and 
PREPRO in ('0','1','-1')) or 
convert(varchar, PREPRO) in ('True','False') 
then convert(bit, convert(integer, PREPRO)) else 'No' end 
from dbo.TI10SE 

PREPRO 모두 "거짓"이 포함되어 있습니다.

는이 오류를 얻을 : int 데이터 형식 '거짓'이 NVARCHAR 값을 변환 할 때

변환에 실패했습니다.

nvarchar를 정수로 변환 할 수 없다는 의미입니까? 일부 데이터가 손실 될 수 있기 때문에 그 것 같아요.

+1

어떤 유형이'PREPRO'입니까? – Oded

+0

nvarchar입니다. 불가능합니다. – Abs

답변

1

사용 CASE이 작업을 수행합니다 :

DECLARE @PREPRO VARCHAR(5) 
SET @PREPRO = 'False' 
SELECT CASE WHEN @PREPRO = 'False' THEN 0 ELSE 1 END 
+0

네, 이것이 제가 한 것입니다. 나는 고위 사람이 작성한 코드를 사용하려고 시도했지만 그 다음에는 nvarchar를 int로 변환 할 수 없다는 것을 깨달았습니다. – Abs

5

당신은 그것을 보유 값이 True 또는 False 인 경우에도 PREPRO 정수로 변환하려고 :

convert(integer, PREPRO) 

당신은 정수로 값 False을 변환 할 수 없습니다. 이 True 또는 False 중 하나로 평가할 때 PREPRO는 0, 1, -1 또는 내에서 숫자가있을 때 절은 참으로 평가 귀하의 경우에

조건부. 에서 이러한 경우의이 있으면이 값을 정수로 변환 한 다음 조금 변환하려고 시도합니다.

1

NVARCHAR가 정수로 변환 할 수는

DECLARE @PREPRO VARCHAR(5) 
SET @PREPRO = '10' 

SELECT CONVERT(integer, @PREPRO) 

T-SQL과 함께 연결 해야할지하지 않는 정수가 포함되어있는 경우 '거짓' 또는 'True'이므로 rdkleine처럼 CASE 문을 사용해야합니다. 이 문장에서 또한

: '아니오'형의 비트의 수 없기 때문에

convert(bit, convert(integer, PREPRO)) else 'No' end 

당신은, 오류가 발생거야, 당신은 무엇을 반환하려고?

관련 문제