我正在为客户重建遗留程序......数据库设计得相对完善我唯一不关心的是所有null varchar值...(个人不关心这个我的客户代码...)
我正在尝试用空字符串替换所有null varchar列...通常我会在我的导入脚本中执行此操作,但我不需要修改架构,因此我不打算执行导入脚本。 ..
想知道你们中的任何人是否熟悉SQL人员/女孩知道foreach的方法(db中的varchar列)用''有点东西替换null?
我知道必须有办法... P.S. MSSQL 2008r2 DB
答案 0 :(得分:3)
我个人认为用空字符串替换null
是个坏主意。
但你要求它,所以这里是
UPDATE table1 SET field1 = '' WHERE field1 IS NULL
另一个选择是在你的select语句中解决它:
SELECT coalesce(field1, '') as field1_excl_nulls FROM table1
这将使用空字符串替换输出中的null
,同时仍将空值留在数据库中。
答案 1 :(得分:1)
为此,您可以构建动态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