1
最近,大約2個月前,需要檢查表中具有NULL值的任何字段。檢查表中是否有任何字段有空值
我現在進入另一個任務,但這次我需要檢查表中的任何字段是否有空字符串值。
開始查詢:
;With xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
SELECT *
FROM [Schema].[Table] act
where (
select act.*
for xml path('row'), elements xsinil, type
).exist('//*/@ns:nil') = 1
我知道自己需要改變@ns:nil
但正如我在T-SQL的XQuery實現是沒有受過教育,我需要有人來幫助我這個初始查詢。另外,我應該去MSDN以外的地方閱讀使用和功能。
更新#1:
;With xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
Select *
from Schema.Table act
where (
select act.*
for xml path('row'), elements xsinil, type
).value('(//row/*)[1]', 'varchar(max)') = ''
試過,但明顯的領域之一包含字符0x001C
等都需要轉換爲二進制,varbinary或圖像,然後使用BINARY BASE64
指令。
我需要搜索的列是VarChar字段。事實上XQuery會更快,因爲有些表只有7個字段,而其他的字段有50多個字段。因此,我需要「相對」輕鬆地遍歷各個表,然後找出哪些表中有空值,因此我知道將哪些轉換爲NULL。 – GoldBishop
你的意思是表中的每一列都是一個varchar列,或者你只想檢查一下varchar列嗎?我不認爲XQuery版本更快。更快輸入yes。執行速度並不快。也許你應該看看動態地創建where子句,以便你的代碼可以重複使用多個表? –
最好只檢查varchar字段。但是,如果值類型不符合字符串,將不會空()返回NULL而不是0或1。 – GoldBishop