2011-06-13 2 views
0

에 대해 빈 문자열을 널 (null) VARCHAR 필드를 교체 ... 데이터베이스가 비교적 잘 내가 걱정하지 않는 유일한 것은 모든 널 VARCHAR 값입니다 설계 ... '나는 빈 문자열 모든 널 VARCHAR 컬럼을 대체하기 위해 노력하고있어내가 클라이언트에 대한 기존 프로그램을 재 구축하고있어 전체 DB

일반적으로 내 수입 스크립트에서이 작업을 수행 할 것 ... (개인적으로 ... 내 클라이언트 코드에서이 나눠에 대한 상관 없어)하지만 난 돈 스키마를 수정하여 가져 오기 스크립트를 수행 할 필요가 없도록해야합니다.

여러분 중 어떤 사람이든 foreach (db의 varchar 열)로 대체하는 SQL 녀석/소녀는 " 어떤 것? 나는이 방법이 있어야합니다 알고

... 추신 : MSSQL 2008R2 DB

+3

NULL 의미 "없거나 적용 할 수 없습니다." 빈 문자열은 무엇을 의미하며, 왜 더 나은가? – n8wrl

+3

또한 varchar 값 중 하나가 FK이면 참조 된 테이블에 '빈 문자열'을 추가해야합니다. brrrrr – n8wrl

+0

@bbleble_bee, 이것은 좋은 생각이 아니며 출력을하는 select 문에서 병합으로 해결하는 것이 좋습니다. – Johan

답변

1

이렇게하려면, 당신은 동적 SQL 문을 구축 할 수 있습니다 :

declare @sSQl nvarchar(max)='' 
SELECT 
@[email protected]+'UPDATE ['+TABLE_NAME+ '] SET ['+COLUMN_NAME+']='''''+' WHERE ['+COLUMN_NAME+ '] IS NULL'+CHAR(13) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE DATA_TYPE LIKE '%CHAR%' 

exec sp_executesql @ssql 
+0

좋은 솔루션 Dalex – ajdams

3

개인적으로 나는 그것이 빈 문자열로 null을 대체하는 나쁜 아이디어라고 생각합니다. 이 빈 문자열 출력에 null를 대체 할

SELECT coalesce(field1, '') as field1_excl_nulls FROM table1 

:

는하지만, 그래서 여기가 다른 옵션은 선택 제표에 그것을 해결하는 것입니다

UPDATE table1 SET field1 = '' WHERE field1 IS NULL 

, 그것은 요청 , 데이터베이스 내에서 여전히 null을 유지합니다.

+1

나는 그 역시 대답이라고 생각했으나 OP는 시도 중이다. 일반적으로 모든 열을 반복합니다. –

+0

... db의 모든 테이블에 대한 모든 열. –

+0

@All 나는 null 일 필요가없는 것들에 대해서 이야기하고 있습니다. 그리고 그것은 정말로 일관성있는 기본 설정의 문제입니다. 나의 절은 field = ''또는 field가 null 인 곳이 될 것입니다. FK의 PK에 대한 이야기가 아닙니다. 이것들은 모두 null ID 필드가 아닌 int입니다. @ kirk Woll 예 sp_MSforeachtable @ command1 = "print '로 모든 인덱싱 재 작성 같은 반복? DBCC DBREINDEX ('?') " –

관련 문제