0

私のテーブルには、空白の値を持つ列がほとんどありません。特定のテーブルのすべての空白を NULL に置き換えることができるクエリを提案できますか?

編集

質問を正しく指定できなかった場合は申し訳ありません。クエリで列名を指定したくありません。私が持っているのはテーブル名だけです。したがって、特定のテーブルについて、すべての列をチェックし、空白の値を NULL に変換したいと考えています。

4

4 に答える 4

3

アプローチとして、次のストアド プロシージャが役立ちます。

 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'
于 2012-09-05T09:49:18.193 に答える
2

テーブル内のすべての空白値を取り除くには:

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 で実行します。

于 2012-09-05T09:28:17.390 に答える
1

単純UPDATEに次のように使用します。

UPDATE myTable SET myColumn = NULL WHERE myColumn = '';
于 2012-09-05T09:26:41.370 に答える