更新sql server的datetime类型数据 现在有一个datetime类型数据, 传入的字符传为空时, 它默认插入了1900-01-01的值, 我希望当为空时应该用null来update, 该如何去实现呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那你就不要插入空字符串,判断一下,如果为空,就设置为NULL值,再插入,举例如下:use tempdbgocreate table t1(datecol datetime)godeclare @s varchar(10)set @s = ''set @s = case when @s = '' then null else @s end --这里做这样的判断insert t1 select @sgoselect * from t1godrop table t1go 那你就不要插入空字符串,判断一下,如果为空,就设置为NULL值,再插入,举例如下:use tempdbgocreate table t1(datecol datetime)godeclare @s varchar(10)set @s = ''set @s = case when @s = '' then null else @s end --这里做这样的判断insert t1 select @sgoselect * from t1godrop table t1go 为空时declare @tb table(a datetime)declare @str1 varchar(10);set @str1='';if len(@str1)=0 set @str1=nullinsert @tb select @str1select * from @tba ------------------------------------------------------ NULL(所影响的行数为 1 行)不为空时declare @tb table(a datetime)declare @str1 varchar(10);set @str1='2008-10-21';if len(@str1)=0 set @str1=nullinsert @tb select @str1select * from @tba ------------------------------------------------------ 2008-10-21 00:00:00.000(所影响的行数为 1 行) isnull(<传入值>,null)方法我问前试过,像这样update <table> set <field>=isnull(?,null)....没有用;而判断的方法, 是在存储过程中才可以用的吧,我用的是batchSQL来做的,因为传入的存储变量数是可变的,可能是1条,也可能是n条,存储过程不好来做。我试着用, 如果为空存入空对象方法来做,不过一样会update为1900-01-01,请问还有什么好的建议。 declare @t table([date] datetime)declare @s varchar(10)set @s = ''insert @t select case when @s='' then null else @s end --这里做判断select * from @t http://www.ebigear.com/register-sunshareforever.html 设置列允许为空,不要给默认值然后update tb set col = @参数即可@参数若为null,则列将被更新为null若你指的@参数为''时,更新为null那么:update tb set col=nullif(@参数,'')这样,当@参数为null或为''都将把列置为null sql2008 递归,客户端with语法错误 求一句sql! 求一条SQL! 急! 临时表大小写敏感 求SQL SERVER 按年月自动编号的触发器! SQL疑难问题,困恼中,请高手来协助。 请问知道一个表的名称,用什么命令能知道它的表结构?在线........ 网站两个数据库并存问题! 请帮我在横线处填上正确的 SQL数据库 插入数组 数据透视,怎么得不到我想要的结果? sqlserver如何对指定的目录进行扫描?
use tempdb
gocreate table t1(datecol datetime)
godeclare @s varchar(10)set @s = ''set @s = case when @s = '' then null else @s end --这里做这样的判断insert t1 select @s
goselect * from t1
godrop table t1
go
use tempdb
gocreate table t1(datecol datetime)
godeclare @s varchar(10)set @s = ''set @s = case when @s = '' then null else @s end --这里做这样的判断insert t1 select @s
goselect * from t1
godrop table t1
go
declare @tb table(a datetime)
declare @str1 varchar(10);
set @str1='';
if len(@str1)=0
set @str1=null
insert @tb select @str1select * from @tba
------------------------------------------------------
NULL(所影响的行数为 1 行)
不为空时
declare @tb table(a datetime)
declare @str1 varchar(10);
set @str1='2008-10-21';
if len(@str1)=0
set @str1=null
insert @tb select @str1select * from @tba
------------------------------------------------------
2008-10-21 00:00:00.000(所影响的行数为 1 行)
declare @s varchar(10)
set @s = ''
insert @t select case when @s='' then null else @s end --这里做判断
select * from @t
然后
update tb set col = @参数
即可@参数若为null,则列将被更新为null若你指的@参数为''时,更新为null
那么:update tb set col=nullif(@参数,'')这样,当@参数为null或为''都将把列置为null