怎样用SQL语句在某一值为空时赋值给它另一个值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用SQL语句在某一值为空时赋值给它另一个值相关的知识,希望对你有一定的参考价值。

怎样用SQL语句在某一值为空时赋值给它另一个值

参考技术A 使用Isnull()函数

语法
ISNULL ( check_expression , replacement_value )

参数
check_expression 将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
replacement_value 在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。

返回类型
返回与 check_expression 相同的类型。

注释
如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value。
参考技术B ORACLE数据库用NVL(COLUMN,'为空时的值')
SQLSERVER数据库用ISNULL() 用法同上
参考技术C IF (@var is null) set @val = '你的新值'本回答被提问者采纳 参考技术D update table set fields='aaa' where fields is null or fields='' 第5个回答  2018-07-19 mysql:

when a.'字段名'is null then '结果'

sql server 2008环境中,字段为decimal(18,2),当输入为空时,会报错。

遇到一个问题,数据库为sql server 2008环境中,字段为decimal(18,2),当输入为空时,会报错,错误信息为:从数据类型 varchar 转换为 numeric 时出错。如果输入不为空,则可以正常通过,请各位能人高手支支招。

首先 你要分清 null与输入为空的区别
null:表示未知值,没有值
你所说的输入为空值:其实已经有值了,值是一个空的字符串即‘’,‘’转化成数字类型当然会报错。

建议在程序的前端保存的时候做一个校验,如果输入的是‘’,则转化为null 或者0 来保存就好了。
建议楼主百度一下 null与‘’ 的区别追问

谢谢~~~
你的意思是在C#里加一个判断:
if(a=="")

a == null;


但这里有个问题,我尝试把把此时的a赋值给decimal,却同样会出现这个报警信息。null貌似不能给decimal赋值吧?

追答

你在最后转化成的sql 语句 是有问题的
比如: UPDATE TABLEA SET COLS1='NULL'
和 UPDATE TABLEA SET COLS1=NULL
你最后的生成的sql语句肯定是 前者, 多了引号,有了引号就表示是字符串了,表示有值
你还是没有理解在sql中 空值与null的区别,建议你搜搜相关的资料

参考技术A 不能使用‘’(空),只能用0或者null值代替。

以上是关于怎样用SQL语句在某一值为空时赋值给它另一个值的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询最接近某一值的数据

Mysql下在某一列后即表的某一位置添加新列的sql语句

xpath中怎样用变量

SQL如何查询出某一列中不同值出现的次数?

C#.net怎样判断gridview中某一列的是不是为空

SQL语句 将表中的某一列的数据赋值成从0开始自增1