【问题标题】:How to convert two nvarchar rows into one when one of the row is null当其中一行为空时,如何将两个 nvarchar 行转换为一个
【发布时间】:2011-05-06 10:04:36
【问题描述】:

很抱歉,如果这与现有问题之一重复(它很简单,但我无法弄清楚,我是新手)。

我需要将一些数据从一个表迁移到另一个表(不同的结构)。

表 A 有 Firstname 和 LastName 列。 表 B 有名称列

我想做

SELECT Firstname + ' ' + LastName As Name FROM TableA 

但问题是,在表 B 中,有些行的名字或姓氏为空值,但不是两者都有(懒惰用户)。

当我将它们导入表 B 时,查询失败,因为在我的新设计中 Name 列不可为空,并且当我测试上面的语句时,如果 firstname 或 lastname 为 null,则连接值为 null。

根据我所做的阅读,这是预期的行为,但我能做些什么来解决这个问题?

如果另一个为空,我想保存名字或姓氏。

【问题讨论】:

    标签: sql database sql-server-2008


    【解决方案1】:
    SELECT RTRIM(LTRIM(ISNULL(Firstname ,'') + ' ' + ISNULL(LastName,''))) AS Name 
    FROM TableA 
    

    【讨论】:

      【解决方案2】:

      这可以通过一个 colaesce 来完成(返回第一个非 null)并且不需要弄乱空格。

      select 
        coalesce(firstname + ' ' + lastname, firstname, lastname)
      from TableA
      

      【讨论】:

        【解决方案3】:

        使用 coalesce 或 isnull

         select COALESCE(FirstNAme, '') + ' ' + COALESCE(LastName, '') as name from TableA
        

        【讨论】:

          【解决方案4】:
          SELECT isnull (Firstname, '') + ' ' isnull (LastName, '') as Name 
          FROM TableA
          

          【讨论】:

            猜你喜欢
            • 2013-01-04
            • 2021-08-08
            • 2014-08-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-14
            相关资源
            最近更新 更多