私のテーブルには、空白の値を持つ列がほとんどありません。特定のテーブルのすべての空白を NULL に置き換えることができるクエリを提案できますか?
編集
質問を正しく指定できなかった場合は申し訳ありません。クエリで列名を指定したくありません。私が持っているのはテーブル名だけです。したがって、特定のテーブルについて、すべての列をチェックし、空白の値を NULL に変換したいと考えています。
私のテーブルには、空白の値を持つ列がほとんどありません。特定のテーブルのすべての空白を NULL に置き換えることができるクエリを提案できますか?
編集
質問を正しく指定できなかった場合は申し訳ありません。クエリで列名を指定したくありません。私が持っているのはテーブル名だけです。したがって、特定のテーブルについて、すべての列をチェックし、空白の値を NULL に変換したいと考えています。
アプローチとして、次のストアド プロシージャが役立ちます。
CREATE PROCEDURE up_replaceBlanksByNulls
@schemaName nvarchar(50),
@tableName nvarchar(100)
AS
declare @query1 nvarchar(max) = ''
select @query1 = @query1 + 'UPDATE ' + @schemaName + '.' + @tableName + ' SET ' + c.COLUMN_NAME + ' = NULL WHERE ' +
c.COLUMN_NAME + ' = '''';' FROM INFORMATION_SCHEMA.COLUMNS c
WHERE C.TABLE_NAME = @tableName
EXECUTE sp_executesql @query1
GO
使用法:
up_replaceBlanksByNulls 'dbo', 'myTable'
テーブル内のすべての空白値を取り除くには:
CREATE PROCEDURE getRidOfBlanks
@tableName nvarchar(50)
AS
DECLARE @colName varchar(50)
DECLARE Table_Cursor CURSOR FOR
select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='@tableName'
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @colName
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tableName SET @colName = NULL WHERE @colName = '';
FETCH NEXT FROM Table_Cursor INTO @colName
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
GO
これを使用するには、私のコードでプロシージャを作成し、それを tableName で実行します。
単純UPDATE
に次のように使用します。
UPDATE myTable SET myColumn = NULL WHERE myColumn = '';