将整个数据库的空varchar字段替换为空字符串



我正在为客户端重建一个遗留程序。。。数据库设计得相对不错——我唯一不在乎的是所有的空varchar值。。。(个人不在乎把这个交给我的客户代码…)

我正在尝试用空字符串替换所有空的varchar列。。。通常我会在导入脚本中这样做,但我不需要修改架构,所以我不会做导入脚本。。。

想知道你们这些SQL高手是否知道foreach(数据库中的varchar列)用"之类的东西替换null的方法?

我知道一定有办法。。。P.S.MSSQL 2008r2数据库

我个人认为用空字符串替换null是个坏主意。

但你要的,所以这里是

UPDATE table1 SET field1 = '' WHERE field1 IS NULL

另一种选择是在您选择的语句中解决它:

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

这将用空字符串替换输出中的null,同时仍在数据库中保留null。

要做到这一点,您可以构建动态SQL语句:

  declare @sSQl nvarchar(max)=''
SELECT  
@sSQl=@sSQl+'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

最新更新