정말 나쁜 디자인 그리고 당신은 일을 열심히하게 문자열로 번호를 저장하지만, 난 그냥 그 기능 IIF()
, TRY_CAST()
및 REPLICATE()
사용하여 생각할 수 : 샘플에서
:
CREATE TABLE Sample (
UserID INT,
Ys_Ar_Item1 VARCHAR(10),
Ys_Ar_Item2 VARCHAR(10),
Ys_Ar_Item3 VARCHAR(10)
-- Other columns
);
INSERT INTO Sample VALUES
(1, '20134', 'nil NULL', '02341');
SELECT UserID,
IIF(TRY_CAST(Ys_Ar_Item1 AS INT) IS NULL, '0', CAST(REPLICATE('1', LEN(Ys_Ar_Item1)) AS INT) + CAST(Ys_Ar_Item1 AS INT)) AS Ys_Ar_Item1,
IIF(TRY_CAST(Ys_Ar_Item2 AS INT) IS NULL, '0', CAST(REPLICATE('1', LEN(Ys_Ar_Item2)) AS INT) + CAST(Ys_Ar_Item2 AS INT)) AS Ys_Ar_Item2,
IIF(TRY_CAST(Ys_Ar_Item3 AS INT) IS NULL, '0', CAST(REPLICATE('1', LEN(Ys_Ar_Item3)) AS INT) + CAST(Ys_Ar_Item3 AS INT)) AS Ys_Ar_Item3
FROM Sample;
주 귀하의 질문에 이미지로 포함시킨 데이터가 6보다 많지 않은 경우, 그러한 숫자가 있으면이 솔루션은 실패합니다.
@Sami을 - 나는 테이블의 모든 컬럼의 모든 값을 교체해야합니다. – KulOmkar
'Ys_Ar_Item1' ... 데이터 유형이 varchar 또는 int입니까? – Sami
datatype이 VARCHAR (MAX) – KulOmkar