2017-12-03 159 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结束

相关问题