假設表有4個字段為FIELD1-FIELD4
同心ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
只有有一個字段為空就刪除
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分才行??!
SQLSERVER NULL和空字符串的區(qū)別 使用NULL是否節(jié)省空間
對于varchar數據類型,無論是空字符串還是NULL值都不占用任何空間
對于char數據類型,無論是空字符串還是NULL值都占用空間,所占用空間大小取決于建表時候指定的char數據類型的大小
insert into ta1_sql (col1,col2) select col1,'' from ta2_oracle
如果確定這個字段都是空的,語句里直接賦值吧,別寫字段名了
你先粘貼到記事本里面,保存為文本文件再導入,就可以避免執(zhí)行問題
""是占用存儲空間的 而且""這個是一個字符 是存儲在數據庫中的
只有NULL 才是不占存儲空間的且沒有數據