본문 바로가기

MS-SQL4

다수의 테이블에 컬럼 추가하기 (존재 여부 검사) 시스템 테이블(sys.tables)을 통해 다수의 테이블을 필터링하고, 임시 테이블 변수에 저장. 추가할 컬럼을 설정하고, 임시테이블 변수를 커서로 오픈하여 이터레이션하며 컬럼이 이미 존재하는지 여부 확인 후 추가. 컬럼을 단순 이름보다 타입, 길이, 널 허용 여부 등등을 임시 테이블 변수나 delimiter를 활용한 문자열 등으로 확장하여 개선할 수 있다. DECLARE @tblNames TABLE ( tbl_nm nvarchar(200) ); INSERT INTO @tblNames SELECT [name] FROM sys.tables WHERE [name] LIKE '%%'; SELECT * FROM @tblNames; DECLARE @name varchar(200), @col_1 varchar(20.. 2017. 11. 24.
정렬시 null 값을 후위로 배치하기. ORDER BY CASE WHEN {컬럼명} IS NULL THEN 1 ELSE 0 END, {컬럼명} ASC 만약 NULL 중에 특정 컬럼 값이 일치하면 다시 정렬 순서 중에 최 후위로 배치하고 싶다면, ORDER BY CASE WHEN {컬럼} IS NULL THEN CASE {다른컬럼} WHEN {특정값과 일치} THEN {1보다 높은 수} ELSE 1 END ELSE 0 END, {컬럼} ASC 2017. 2. 15.
MS-SQL 성능 관련 참고 사이트 바로가기 2010. 4. 27.
프로시저에 콤마(,)로 구분된 데이터를 배열(or Table)로 전환 기타 관련 링크 함수로 만들어 사용할지 프로시저 내부에 구현할지는 마음대로..... CREATE FUNCTION iter$simple_intlist_to_tbl (@list nvarchar(MAX)) RETURNS @tbl TABLE (number int NOT NULL) AS BEGIN DECLARE @pos int, @nextpos int, @valuelen int SELECT @pos = 0, @nextpos = 1 WHILE @nextpos > 0 BEGIN SELECT @nextpos = charindex(',', @list, @pos + 1) SELECT @valuelen = CASE WHEN @nextpos > 0 THEN @nextpos ELSE len(@list) + 1 END - @po.. 2010. 3. 29.