用空白值替换为空值
尝试通过使用案例语句将null转换为空白值。
注意:sampCol
是数字IDS
,CASE WHEN sampCol IS NULL THEN '' ELSE sampCol END as sampCol
我不断收到以下错误:
错误将数据类型VARCHAR转换为数字。
您正在混合数字和字符串值。
null不是一个空字符串。这是没有价值。
这样的项目应该真正降级到演示层,但是如果必须,请尝试以下作弊。
...
, concat('',sampCol) as sampCol
...
这是因为案例表达式可以根据数据类型的优先级返回一个和唯一的数据类型。您不能将空字符串转换为数字数据类型。您正在尝试做的声音听起来像在演示层,而不是数据层。让null发生!!!
使用CAST()
使用COALESCE()
将有所帮助:
SELECT COALESCE(CAST(SampCol AS VARCHAR (10)), '') AS SampCol
FROM TestTable
在这里而不是VARCHAR (10)
,您可以根据业务需求更改所需的长度。
db<> fiddle
添加到肖恩·梅(Shawn May(的答案中。三个左括号和只有2个右支架永远不会起作用。尝试:
ISNULL(CAST(sampCol AS VARCHAR(100)),'')
也许使用AS
添加字段名称,以便您可以在应用中使用它。
ISNULL(CAST(sampCol AS VARCHAR(100)),'') as samplColName
脚本将所有空值修复到数据库
/ Brian Alvarez Ayala /电子邮件-brian.alvarez@yahoo.com网站-W W W。a s e s o r i a r e m o t a。c o m
声明@column_name varchar(40(声明@data_type varchar(40(声明@Tables_Names varchar(40(声明@Table_Schema varchar(40(声明@is_nullable varchar(3(
声明@sqlcmd varchar(max(声明Tablas Cursor选择t.table_schema,t.table_name,c.column_name,c.data_type,c.is_nullable coseform_schema.schema.tables t内部加入信息_schema.columns c on c.table_name = t.table_name and c.table_schema = t.t.table_schema开放tablas从tablas获取@table_schema,@tables_names,@column_name,@data_type,@is_nullable@@ @fetch_status = 0 开始
if(@data_type ='numeric'或@data_type ='int'(和 @is_nullable ='yes' 开始 set @sqlcmd ='update' @table_schema '。' @tables_names 'set' @column_name '= 0 where' @column_name '是null'' 打印@SQLCMD 结束
if (@DATA_TYPE = 'nvarchar' or @DATA_TYPE = 'varchar' or @DATA_TYPE = 'char') and @IS_NULLABLE='YES'
begin
set @SqlCMD ='Update ' + @TABLE_SCHEMA+'.'+@TABLES_NAMES + ' set ' + @COLUMN_NAME + ' = ' + ''' ''' + ' where ' + @COLUMN_NAME + ' is null'
print @sqlcmd
end
if (@DATA_TYPE = 'bit') and @IS_NULLABLE='YES'
begin
set @SqlCMD ='Update ' + @TABLE_SCHEMA+'.'+@TABLES_NAMES + ' set ' + @COLUMN_NAME + ' = ' + '''False''' + ' where ' + @COLUMN_NAME + ' is null'
print @sqlcmd
end
fetch next from tablas into @TABLE_SCHEMA,@TABLES_NAMES,@COLUMN_NAME,@DATA_TYPE,@IS_NULLABLE
end
关闭桌DealLocate Tablas
..CASE WHEN sampCol IS NULL THEN to_number('') ELSE sampCol END as sampCol