2012-02-23 48 views
0

這是我設法研究的代碼。整個表從SQL導入,如NOT NULL。運行時出現錯誤信息「傳遞給RIGHT函數的長度參數無效」。它似乎只給出這個錯誤消息,如果一個字段中有空白條目。從開始和結束刪除引號 - 用於空白的字段

如何將此腳本更改爲僅在字段不爲空時才運行?

UPDATE [Majestic].[dbo].Fields_custom 
    SET maxlength=left(right(cast(maxlength as nVarChar),LEN(cast(maxlength as nVarChar))-1),LEN(cast(maxlength as nVarChar))-2) 
    WHERE maxlength IS NOT NULL 

回答

1

只需加一個條件,你的領域必須在開始引號和結束:

... AND maxlength LIKE '"%"' 
+0

感謝MicSim,這工作像一個魅力! – hermanvn 2012-02-23 10:33:49

0

如果該字段爲空白,長度將爲零,因此您將要求最右邊的-1個字符,這是無效的。

+0

感謝埃德,我做看到它,但我的Where語句不協助嗎?它應該只更新IF maxlength <>空白? – hermanvn 2012-02-23 10:27:28

0

- SQL

WHERE not (ISNULL(maxlength, '') = '') 

或Oracle

WHERE not (nvl(maxlength, '') = '') 
+0

錯誤消息b0rg:'IS_NULL'不是公認的內置函數名稱。 – hermanvn 2012-02-23 10:29:19

+0

該字段字面上看起來像「9」或空白 – hermanvn 2012-02-23 10:30:04

+0

ISNULL()當然。更正 – b0rg 2012-02-23 10:36:36

相關問題