2017-12-03 176 views
0

這是我想要實現的邏輯:MSSQL:在有條件欄填入值與另一列如果空白

如果「NEW_COLUMN」爲空然後拉從「事件」列中的值.. 。否則保留'new_column'中的值

我已經在Python代碼中成功編寫了它,但是對於SQL來說是新的。

df_EVENT5_6['new_column'] = np.where(df_EVENT5_6['new_column'] == '', df_EVENT5_6['event'], df_EVENT5_6['new_column']) 

如何將上述Python代碼轉換爲SQL?

回答

0

你正在尋找coalesce()

select coalesce(new_column, event) as new_column 
+0

這個工作選擇的情況下!謝謝 – PineNuts0

0

這是如何在MSSQL代替空格:

SELECT REPLACE(new_column, '', event) 
FROM TABLE 

如果你也想照顧空值,那麼你可以在同一查詢添加ISNULL:

SELECT REPLACE(ISNULL(new_column, event), '', event) 
FROM TABLE 
0

假設你試圖返回數據,你會在SELECT語句中使用的COALESCE功能,如下圖所示:

select 
    [new_column] = coalesce(new_column, event), 
    [event] = event 
from 
    df_EVENT; 

不會有什麼COALESCE帶參數的優先順序並返回非空的第一個值。下面這個函數將其評價爲CASE表達,所以你可以用你的病情空長字符串修改上面NULL這樣:

select 
    [new_column] = case when new_column > '' then new_column else event end 
    [event] = event 
from 
    df_EVENT; 

這是不知道你的數據源。如果您正在從Python進行INSERT,那麼您可以保留Python邏輯並將其應用於傳遞的SQL語句。否則,你可以按照上面列出的方式進行操作。如果你使用SQL Server

Insert into TABLENAME (Column1) 
(Select ISNULL(new_column, eventcolumn) from TABLENAME) 

ISNULL功能檢查,這就是如果NEW_COLUMN是空

+0

什麼是Python的INSERT?這是否意味着我可以在我的MSSQL環境中運行Python代碼? – PineNuts0

+0

我指的是執行代碼的內容。如果您正在Python中準備SQL Insert語句,那麼只需使用您熟悉的內容來傳遞更新後的值即可。否則,如果你試圖在SQL語法中處理這個條件,那麼上面的語句就是你要使用的。 – Solonotix

0

試試這個,然後採取eventcolum否則採取新的列值

,或者您也可以使用大小寫的值時,SQL的設施。 情況下,當語法是這樣的:

時ISNULL(NEW_COLUMN, '')= '' 然後eventcolumn其他NEW_COLUMN結束