MSSQL:如果空白,则有条件地填充来自另一列的值的列

时间:2017-12-03 03:25:51

标签: python sql replace conditional-statements

这是我试图实现的逻辑:

如果'new_column'为空,则从'event'列中提取值...否则保留'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?

4 个答案:

答案 0 :(得分:0)

这就是你可以在MSSQL中替换空白的方法:

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

如果你还想照顾NULLS,那么你可以在同一个查询中添加ISNULL:

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

答案 1 :(得分:0)

您在寻找coalesce()吗?

select coalesce(new_column, event) as new_column

答案 2 :(得分:0)

假设您正在尝试RETURN数据,您将在SELECT语句中使用COALESCE函数,如下所示:

<script>
if (Modernizr.lineclamp)
{
alert("yay");
}
else
{
alert("nay");
}
</script>

COALESCE的作用是按优先顺序获取参数,并返回第一个NOT NULL值。在这个函数下面,它被评估为CASE表达式,所以你可以修改上面的NULL,你的条件是空长字符串:

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

这是在不知道您的数据源。如果您正在从Python执行INSERT,那么您可以保留Python逻辑并将其应用于传递的SQL语句。否则,你可以像我上面列出的那样。

答案 3 :(得分:0)

如果您使用Sql server

,请尝试此操作
Insert into TABLENAME (Column1)
(Select ISNULL(new_column, eventcolumn) from TABLENAME)

ISNULL函数检查如果new_column为null则获取eventcolum的值,否则获取新列值

或者你也可以在sql的设施使用案例。 语法如下:

选择isnull时的大小写(new_column,'')='' 然后eventcolumn其他new_column结束