我正在使用SQL Server 2005.我有一個帶有文本列的表,並且表中有許多行,其中此列的值不爲null,但爲空。嘗試與''進行比較產生此響應:如何檢查SQL Server文本列是否爲空?
數據類型text和varchar在不等於運算符中不兼容。
有一個特殊的函數來確定文本列的值是否不爲空,但空的?
我正在使用SQL Server 2005.我有一個帶有文本列的表,並且表中有許多行,其中此列的值不爲null,但爲空。嘗試與''進行比較產生此響應:如何檢查SQL Server文本列是否爲空?
數據類型text和varchar在不等於運算符中不兼容。
有一個特殊的函數來確定文本列的值是否不爲空,但空的?
where datalength(mytextfield)=0
http://msdn.microsoft.com/en-us/library/ms173486.aspx – 2010-09-29 18:50:57
這不是真正的問題,只是對只讀標題的人的一個評論,不要忘記添加`OR mytextfield IS NULL`當你的列可以是'NULL` – Daan 2015-08-27 09:50:28
`mytextfield IS NULL *或*`:-) – 2016-11-20 20:24:32
我將測試針對SUBSTRING(textColumn,0,1)
其實,你只需要使用LIKE運算符。
SELECT * FROM mytable WHERE mytextfield LIKE ''
似乎無法在SQL Server 2008中運行 – escist 2012-06-26 11:31:36
是空還是空字符串等效?如果是這樣,我會在我的應用程序中包含邏輯(或者如果應用程序是「開箱即用」的話,可能會觸發一個觸發器)來強制該字段爲空或「」,而不是其他字符。如果您使用'',那麼您可以將列設置爲NOT NULL。只是一個數據清潔的事情。
ISNULL(
case textcolum1
WHEN '' THEN NULL
ELSE textcolum1
END
,textcolum2) textcolum1
我想有一個預定義的文本(「無可用實驗室」),以顯示如果值爲null或空了,我的朋友幫我看看這個:
StrengthInfo = CASE WHEN ((SELECT COUNT(UnitsOrdered) FROM [Data_Sub_orders].[dbo].[Snappy_Orders_Sub] WHERE IdPatient = @PatientId and IdDrugService = 226)> 0)
THEN cast((S.UnitsOrdered) as varchar(50))
ELSE 'No Labs Available'
END
我知道這個帖子是古老的,但我發現它很有用。
它沒有解決我的問題,返回非空文本字段的記錄,所以我想我會添加我的解決方案。
這是爲我工作的where子句。
WHERE xyz LIKE CAST('% %' as text)
你必須做兩件事:
SELECT * FROM Table WHERE Text IS NULL or Text LIKE ''
你可以不喜歡
SELECT * FROM TABLE WHERE FIELDNAME=''
使用IS NULL操作:
Select * from tb_Employee where ename is null
SELECT * FROM TABLE
WHERE ISNULL(LTRIM(RTRIM(FIELD)),''=''
要獲得唯一的空值(而不是空值):
SELECT * FROM myTable WHERE myColumn = ''
要同時獲得空和空值:
SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''
要獲得唯一的空值:
SELECT * FROM myTable WHERE myColumn IS NULL
要獲得除空和空之外的值:
SELECT * FROM myTable WHERE myColumn <> ''
請記住只在必要時使用LIKE短語,因爲與其他類型的搜索相比,它們會降低性能。
我知道有替代品對這個問題的答案很多,但我只是想放在一起我發現通過@Ericž鬍子& @Tim庫珀與@Enrique加西亞& @Uli科勒的最佳解決方案。
如果需要處理的事實,僅空間可以是相同的用例場景空,因爲下面的查詢將返回1,不是0
SELECT datalength(' ')
因此,我去的東西,如:
SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
使用DATALENGTH方法,例如:
SELECT length = DATALENGTH(myField)
FROM myTABLE
我會轉換數據(典型值)如果可能的話varchar(max),文本已被棄用 - 如果您正在觸摸表格,最好現在開始進行更改。當然,請檢查你的dba。但更多的事情可以轉換之前,他們必須轉換更好的是我的想法。這取決於你使用了多少代碼來包含和編寫文本,這些代碼將會被破壞,以至於現在是否要執行此操作,但是我會提出這些代碼,以便您瞭解最終需要對其進行更改。 – HLGEM 2010-06-23 18:35:08
在給出正確答案並標記爲正確答案後,我從未見過這麼多不正確答案! – 2013-02-06 19:35:32