簡體   English   中英

如何將表中的所有空字符串字段更新為null?

[英]How can I update all empty string fields in a table to be null?

我有一個包含15列的表(其中10列是字符串值)和大約50000行。
它包含很多空字符串值...我搜索是否存在查詢,我可以為其傳遞表名以迭代所有值,如果它等於空,則將其更新為NULL。

UPDATE mytable
   SET col1 = NULLIF(col1, ''),
       col2 = NULLIF(col2, ''),
       ...

這是一種基於表的簡單方法。 只需將表名稱傳遞給proc。 您還可以使姊妹proc循環思想表名稱,並在while循環內調用此proc來處理循環邏輯中的每個表。

CREATE PROC setNullFields 
(@TableName NVARCHAR(100))        
AS    

CREATE TABLE #FieldNames    
(    
pk INT IDENTITY(1, 1) ,    
Field NVARCHAR(1000) NULL    
);    

INSERT INTO #FieldNames    
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName 

DECLARE @maxPK INT;    
SELECT @maxPK = MAX(PK) FROM #FieldNames    

DECLARE @pk INT;    
SET @pk = 1    

DECLARE @dynSQL NVARCHAR(1000) 

WHILE @pk <= @maxPK    
BEGIN    

 DECLARE @CurrFieldName NVARCHAR(100);    
 SET @CurrFieldName = (SELECT Field FROM #FieldNames WHERE PK = @pk)    

    -- update the field to null here:

    SET @dynSQL = 'UPDATE ' + @TableName + ' SET ' + @CurrFieldName + ' = NULLIF('+ @CurrFieldName+ ', '''' )' 
    EXEC (@dynSQL)

 SELECT @pk = @pk + 1    
END    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM