테이블에 NVARCHAR(10)
열이 있습니다. 모든 유형의 UNICODE 문자열을 저장할 수 있습니다.SQL Server : 임시 테이블이없는 문자열에서 char과 다른 문자를 대체하십시오.
'1'과 다른 모든 문자를 '0'으로 바꾸고 싶습니다.
문자열 'C18 *'이 있다고 가정 해 봅시다. 나는 '0100000100'을 얻어야한다.
는이 같은 내 칼럼 (10), 의 크기에 1 인덱스를 포함하는 도우미 테이블을 사용하여 수행 할 관리 :CREATE TABLE HELP(Idx INT)
INSERT INTO HELP
SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10
DECLARE @myStr VARCHAR(10)
SET @myStr = 'C18*'
SELECT STUFF((SELECT '' + CASE(B.Ch) WHEN '1' THEN '1' ELSE '0' END FROM (
SELECT SUBSTRING(A.Val,H.Idx,1) AS Ch
FROM
(SELECT @myStr AS Val) A
CROSS JOIN HELP H
)B FOR XML PATH('')),1,0,'')
그것은 작동하지만, 그것이 더 좋은 수행 할 수 있습니다 방법? 이것은 칼럼의 크기가 시간이 지남에 따라 변할 수 있다는 사실을 무시하고 단순한 업데이트에서는보기 흉한 것처럼 보입니다. 또한 SQL> = 2005에서 실행해야합니다.
SQL 바이올린here
감사합니다!
에서 테스트를 또는 .Net 프로 시저를 사용할 수 있습니까? 데이터를 여러 번 실행하거나 데이터를 한 번만 실행해야하는 작업입니까? –
@MauriceReeves 수십 개의 큰 테이블 (10K + 행)에 대해 한 번만 실행해야합니다 (일부 데이터베이스에서는 손상된 데이터가 일부만 있음). 간단한 콘솔 응용 프로그램이 이것을 해결했을 것입니다,하지만 같은 상황이 다시 발생한다면 + 나는 그 임시 테이블을 좋아하지 않습니다. – darkdante
숫자 테이블은 매우 유용합니다. 많은 사람들이 그것을 영구 테이블로 가지고 있습니다. –