2014-05-22 106 views
0

我想顯示空白而不是表達式字段的零值。如果exp是INT數據類型。每當我嘗試使用(當exp1爲0的情況下,則'else exp1以exp1結束),但它仍然作爲輸出獲得0。謝謝用空格替換0

+3

不太清楚你問這裏。你可以發佈你試過的代碼嗎? – paqogomez

+2

您可能想要使用「CAST()」或「CONVERT()」關鍵字。 –

+0

我有字段,ids是varchar,但高度和重量是整數類型。現在,如果沒有值(使用case語句),我會得到0的身高和體重。但我想在這些領域空白 – user3502587

回答

5

如果exp是一個數字類型,您需要使用CAST or CONVERT將其轉換爲字符串。另外,我不相信exp1 is 0會工作;我想你正在尋找exp1 = 0

嘗試像這樣的:

(case when exp1 = 0 then '' else cast(exp1 as varchar(30)) end) as exp1 

(case when exp1 = 0 then '' else convert(varchar(30), exp1) end) as exp1 

或使用簡單的CASE表達式,像這樣:

(case exp1 when 0 then '' else cast(exp1 as varchar(30)) end) as exp1 

(case exp1 when 0 then '' else convert(varchar(30), exp1) end) as exp1 

注:CASTCONVERTvarcharnvarchar默認長度爲30,所以cast(exp1 as varchar)convert(varchar, exp1)也可以工作,但作爲實踐,最好在每次使用t時指定這些類型的長度下襬。


但是,如果你寧願做的是0值轉換爲null,這也很容易。只需使用NULLIF

nullif(exp1, 0) exp1 

這將返回NULL如果exp1計算結果爲0,否則將返回的exp1值。當您將此值插入表格時,請確保您插入的列是可以爲空的。如果您不熟悉使用null,請參閱主題上的Wikipedia article以獲取更多信息。

+2

[請不要懶惰關於varchar與varchar(n)](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to -kick-declaring-varchar-without-length.aspx) –

+0

@AaronBertrand我實際上有'varchar(30)',但是放棄它以使代碼更緊湊,因爲我認爲OP會更喜歡這個。但你是對的,最好是明確這些事情。無論如何,謝謝你的文章。 –

+0

在這些字段中仍顯示爲0。我有源表中的高度和重量是在varchar()和目標表中的高度和重量是在數字()。我想將源數據插入到目標中。但這裏的問題是身高和體重字段在目的地不斷顯示爲零,只要它沒有價值。我只是想空白有 ID身高體重 B25 146 162 T41 135 G89 201 表B-目的地 ID身高體重 B25 146 162 T41 135 0 G89 0 201 – user3502587

0

我用正則表達式

{ 
    cast(trim(
    replace(to_char(value),'0','')) as int) 
}