2011-04-19 69 views
0

我有一個包含一個String列的表。 我想插入另一個列,如果字符串列被填充或不填充,已經插入到數據庫中的行的值將被填充「y」或「n」。 可以做嗎?SQL - 基於if命令的默認值

實際上它不會有默認值。我只需要知道,如果是可能的基礎上設置這些值,如果命令

+1

我_think_我明白你的意思,但是你可能會編輯你的文章,在這個轉換之前和之後有兩行或三行的例子嗎? – Mat 2011-04-19 14:49:24

+0

另一列是否已填充?你想插入新列的值嗎?爲什麼你需要爲這樣的計算值添加一列? – Oded 2011-04-19 14:50:02

+0

它在生產中像這樣運行,我想切換它,但不想有空指針或類似的東西,你知道我的意思嗎? – pringlesinn 2011-04-19 14:56:18

回答

2

您可以添加計算列:

ALTER TABLE 
     mytable 
ADD  is_string_filled AS (CASE WHEN string_field IS NULL THEN 'N' ELSE 'Y' END) 
+0

如何在另一列之後添加一列 例如,我想在第1列和第2列之間插入第3列 – pringlesinn 2011-04-19 14:53:47

+1

@Pringlesinn - 如果不重新制作表格,則無法進行。這並不重要,因爲你可以說'SELECT col2,col3,col1'來改變順序。 – JNK 2011-04-19 14:58:11

+0

@pringlesinn:你不能。但是你可以改變查詢中的列順序(實際上只是在查詢中做這個計算)。 – Quassnoi 2011-04-19 14:59:01

2
//You can implement this in a select query as well instead of adding a column. 
select strColumn, 
CASE 
    WHEN strColumn is null THEN 'N' 
    ELSE 'Y' 
END as colCheck 

FROM TABLE1; 

您可以在這裏瞭解更多關於在sql中使用條件子句的信息:How do I perform an IF...THEN in an SQL SELECT?

使用查詢查詢而不是添加列來計算上述問題將更可取。如果需要表格表示,您可以從選擇查詢中查看視圖。

+0

更新了語法。謝謝指出。 – reggie 2011-04-19 15:15:45