2013-04-18 27 views
0

在我的一些列中有NULL值。所以我不能實現其他信息(我的其他列)獲得NULL值。所以我用Isnull。但我記錄了我把Isnull()放在我的下面的代碼中。子字符串內的方法如何使用Isnull()

我的代碼是

SELECT TOP(10) 'INSERT INTO jobs(Budget) VALUES('+ 

    CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 

     + SUBSTRING(CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4, 
     patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000 AS VARCHAR(50))+')' 

FROM requirementsdetailsfororganization r 

在上面的代碼,我在萬盧比,數千計算工資。無論我把Isnull(),它顯示錯誤。

推薦我來這個問題了..

+0

那裏有你把ISNULL(),請在顯示上面貼的代碼值.. – 2013-04-18 05:44:54

回答

2

現在,這是我認爲正在發生的事情

您可能使用PATINDEX('%laks%', ISNULL(r.Budget,''))

現在PATINDEX()回報如果找不到模式。 當搜索由ISNULL()返回空字符串內部圖案'%laks%「,則返回值零,這將導致誤差在SUBSTRING()函數,像索引超出範圍

一種溶液的是濾出具有空值的行或者在預算列中爲空。 所以你可以添加LEN()函數並檢查它是否不等於零。 查看下面查詢中添加的WHERE條件。

SELECT TOP(10) 'INSERT INTO jobs(Budget) VALUES('+ 

    CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 

     + SUBSTRING(CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4, 
     patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000 AS VARCHAR(50))+')' 

FROM requirementsdetailsfororganization r 
where len(r.Budget)<>0 


對於有預算中的NULL列,你可以插入像零一些默認值

+0

它工作時,我使用單桌。我使用加入但它顯示一些錯誤。 len()函數在連接中是不可能的? – Duk 2013-04-18 09:09:50

1

要打開一個空值的東西,你可以在你的字符串中使用,你使用這樣的:

... + isnull(expression, 'null') + ... 

如果expression值爲空,您將得到字符串null而不是在查詢中使用。

此外,要與查詢中的值進行乘法運算,首先需要將它們轉換爲數字。

相關問題