sql数据库delete删除的字段如果为空字符串怎么删除

11111sql数据库delete删除的字段如果为空字符串怎么删除,有人说用len函数,我的用法是这样的delete biao where len=0 这样得到的并不是我想要的效果,我不知道用len具体删那个行那个字段该怎么写,
22222 换有个问题,在数据库里边如用户的一张表,我想知道着个人他注册到他最后一次登陆中间有多长时间,字段里有他创建用户的时间格式是这样的1977-08:23:25:45:,好象就是这样的格式就是数据库用getdate()着个函数的格式,换有一个他最后一次登陆的时间,我就是想问下,为什么我用他最后一次登陆的时间减去他注册的时间得到的是个1977什么什么的,我不知道是不是我写的select语句有问题,希望大家可以帮忙解决下,并且写下正确的delete select语句,小弟在这里谢过大家了
一楼的大哥,你这样的写法我用过,我的字段不是空的,他是有值的,但是是个空值,如果我用一个delete biao where field1=''那么这样写会出错的,好象说什么和什么冲突,delete biao where dileld1 is null,这样写会是0个受影响,
好,晚上等我答案好不,

假设表有4个字段为FIELD1-FIELD4
只有有一个字段为空就删除
DELETE BIAO WHERE
FIELD1 IS NULL OR
FIELD2 IS NULL OR
FIELD3 IS NULL OR
FIELD4 IS NULL
所有字段为空才删除:
DELETE BIAO WHERE
FIELD1 IS NULL and
FIELD2 IS NULL and
FIELD3 IS NULL and
FIELD4 IS NULL
第二个问题,看不出您的日期字段格式是什么格式,也没看清您想要什么样的结果,相距的时间是什么?是天,还是月,还是年?
假设您的日期字段是DATETIME类型,我列举了您需求的多种情况:
--如果是要几年或几天或几个月,下面三行分别得到总年数或总月数或总天数(如果是一年就会得到365或366)
select datediff(year,注册时间,getdate())--总年数(整数)
select datediff(month,注册时间,getdate())--总月数(整数)
select datediff(day,注册时间,getdate())--总天数(整数)
--如果是要得到几年和几个月和几天的组合结果(与上面的总数结果不同,这里日不会过31,月不会过12,年月日结果是进位关系),按下面的方法得到.
select cast(datename(year,getdate()-注册时间)-1900 as varchar)+'年'
+cast(datename(month,getdate()-注册时间)-1 as varchar)+'个月'
+cast(datename(day,getdate()-注册时间)-1 as varchar)+'日'

注意:上面两例中,注册时间是您的字段名,GETDATE()是求出的当前日期和时间,如果是别的什么时间字段,如最后登录时间,直接用登录时间替换GETDATE()就行了.
=====================
sql server中的空值就是这样的(NULL),您说的,应该即不是空值,也不是零长度的字符串,也不是数值零.
所以,当不是空值时,您必须要告诉我们字段是什么类型的.
如果您的字段是VARCHAR,NVARCHAR或CHAR类型的,
那么可能就有三种情况,
1.是空格.
2.是零长度字串.
3.是不可显示的乱字符.
但无论哪一种情况情况,只要是字符型的,用您的语句都不会报错,就是这一句:
delete biao where field1=''
除非字段或表名有错误.

建议:
如果是字符型字段(VARCHAR,NVARCHAR或CHAR类型等)
delete biao where RTRIM(field1)=''
如果是数值型字段(INT,FLOAT,DECIMAL等类型,甚至日期型)都可以用下面的语句删除0值.
delete biao where RTRIM(field1)=0

就是说:
如果不是空值(NULL),就必须要知道字段是什么类型才能确定语法格式.

====================
==============================
最后提醒您,我费了好长时间回答您的问题,为了使用我们下次还有这么大的积极性,最少要加到200分才行啊!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-08

    空字符串与没有值是有区别的

    空字符串代表有值,只是为空,而NULL 是代表根本没值

    删除的SQL应该简单,如下SQL

    delete from test where a is null

    或delete from test where a=''

    也可以作为一个条件SQL 如下:

    delete from test where isnull(a,'')=''

    上面的意思是如果为NULL ,赋值''

第2个回答  2008-11-03
delete biao where len(字段名)=0
第3个回答  2008-11-03
delete from tableName where deleteColumn is null
tableName 表名
deleteColumn要删除的字段
第4个回答  2008-11-03
把你的什么和什么冲突的提示拿出来呀!正常的写法就是那样的
相似回答