2012-07-09 2 views
1

누군가가이 작업을 도와 줄 수 있습니다. 이 SQL 쿼리에 문제가 있습니다. price1_split을 int로 변환해야합니다. 그러나 그것은 또한 그것 옆에 만든 연결을 얻는 것 같습니다.SQL 쿼리에서 열을 변환/변환하는 방법

SELECT product_number,product_name,description, 
price1+ ' ' + CONVERT(INT, price1_split) + '% |' + 
price2+ ' ' + CONVERT(INT, price2_split) + '% |' + 
price3+ ' ' + CONVERT(INT, price3_split) + '%' as price_split 
from tbl_products 

오류 MSG는 말한다 다음 VARCHAR 값을 변환 할 때 변환 실패 '% |' 데이터 유형 int.

+0

price_split의 유형은 무엇인가 CONVERT(VARCHAR(n), FLOOR(price1_split))에로 잘라 내기 위해 FLOOR()를 사용하는 것이 더 있을까? VARCHAR이면 캐스팅 할 필요가 없으며 Numeric 인 경우 INT로 캐스팅하지 않고 VARCHAR – codingbiz

+0

문자열' '''+ 정수'price1_split'의 결과가 정수 price1_split이됩니다 ('' ''공백은 무시 됨). 그러나 '+'% | ''하려고하면 SQL Server는 문자열을 정수에 추가 할 수 없기 때문에 수행 할 작업을 모르고 오류가 발생합니다. –

+0

안녕하세요 tcoder & KM, 감사합니다. 감사합니다. :) – SyntaxError

답변

3

궁극적으로 문자열 값을 % |으로 구분해야하므로 정수로 변환하면 안됩니다. 값을 함께 추가하는 경우 INT로 캐스팅해야하지만 추가하지 않으면 문자열에 연결합니다. 그것들이 이미 문자열 (CHAR, VARCHAR) 값이라고 가정하고, 다른 문자 요소에 그것들을 연결하십시오.

SELECT product_number,product_name,description, 
    price1+ ' ' + price1_split + '% |' + 
    price2+ ' ' + price2_split + '% |' + 
    price3+ ' ' + price3_split + '%' as price_split 
from tbl_products 

그러나, 그들은 당신이 정수로 절단하려고하는 부동 소수점 값이 있다면, 당신은 INTCONVERT()와 연결하는 문자열의 뒤쪽으로 CONVERT()을 할 수 있습니다. 이 경우, 아마

-- Using CONVERT(INT) for truncation 
SELECT product_number,product_name,description, 
    price1+ ' ' + CONVERT(VARCHAR(32), CONVERT(INT, price1_split)) + '% |' + 
    price2+ ' ' + CONVERT(VARCHAR(32), CONVERT(INT, price2_split)) + '% |' + 
    price3+ ' ' + CONVERT(VARCHAR(32), CONVERT(INT, price3_split)) + '%' as price_split 
from tbl_products 
+0

감사합니다. Michael, 솔루션 작동! 내가 너를 마스터라고 부를 수 있니? :) – SyntaxError

관련 문제