我正在为客户端重建一个遗留程序。。。数据库设计得相对不错——我唯一不在乎的是所有的空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