데이터는 nvarchar 로 되어 있고요. 가로값을 합계해서 출력하고 싶어요.
숫자 이외 문자도 섞여있는 상황이고요.
문의드립니다.
a | b |
c | d |
24 | 53 |
285 | 998 |
198 | 601 |
Comment 4
-
catchv
2013.06.10 10:39
-
쓸만한게없네(윤선식)
2013.06.10 10:43
이런 거 원하신 건지?
WITH TBL
AS
(
SELECT 'a' AS Col1, 'b' AS Col2
UNION ALL
SELECT 'c', 'd'
UNION ALL
SELECT '24','53'
UNION ALL
SELECT '285','998'
UNION ALL
SELECT '198','601'
)
SELECT
SUM(CASE WHEN ISNUMERIC(Col1) = 1 THEN CONVERT(INT,Col1) ELSE 0 END) AS Col1,
SUM(CASE WHEN ISNUMERIC(Col2) = 1 THEN CONVERT(INT,Col2) ELSE 0 END) AS Col2
FROM TBL
http://www.sqler.com/510990
http://www.sqler.com/470347
http://msdn.microsoft.com/ko-kr/library/ms186272.aspx그렇지만, 데이터가 저런 형태로 들어가 있는 것은 일관성 문제가 심각하고, 나중에 분리하기도 어렵습니다.
빠른 시일 내에 데이터 정제 작업을 하여 분리하심이...
-
쓸만한게없네(윤선식)
2013.06.10 10:47
가로였군요. ㅋ.
WITH TBL
AS
(
SELECT 'a' AS Col1, 'b' AS Col2
UNION ALL
SELECT 'c', 'd'
UNION ALL
SELECT '24','53'
UNION ALL
SELECT '285','998'
UNION ALL
SELECT '198','601'
)
SELECT
CASE WHEN ISNUMERIC(Col1 + Col2) = 1 THEN CONVERT(INT,Col1) + CONVERT(INT,Col2) ELSE 0 END AS '값'
FROM TBL
-
afddsa
2013.06.11 21:23
답변 감사합니다^^
정확히 이해 했는지 모르겠지만
SELECT col1, col2
, CASE
WHEN ISNUMERIC(col1) & ISNUMERIC(col2) != 1 THEN NULL
ELSE CAST(col1 AS INT) + CAST(col2 AS INT)
END
FROM Table
이런식으로 하면 되지 않을까요?
-- catchv