【问题标题】:Trouble using COALESCE function in sql在 sql 中使用 COALESCE 函数时遇到问题
【发布时间】:2012-02-13 11:56:42
【问题描述】:

我正在尝试执行以下操作:

SELECT forename, 
       forename2, 
       surname,
       (SELECT (COALESCE(LEFT(forename, 2)),"") + 
               (COALESCE(LEFT(forename2, 1)),"") + 
               (COALESCE(LEFT(surname, 1)), "") as Mnemonic)
from Persons

试图获取名字的前 2 个字母、名字的第一个字母(如果不为空)和姓氏的第一个字母(如果不为空),如果存在空值,则使用 "" 空字符串。

任何帮助将不胜感激, 问候,Bserk

【问题讨论】:

    标签: sql sql-server coalesce


    【解决方案1】:

    您的问题并没有说明您当前的代码有什么问题,但我猜您会遇到错误,因为您使用的是双引号而不是单引号,并且您的括号不匹配。

    您还可以通过删除内部选择来稍微简化此查询。

    试试这个:

    SELECT forename, forename2, surname, 
        COALESCE(LEFT(forename,  2),'') + 
        COALESCE(LEFT(forename2, 1),'') + 
        COALESCE(LEFT(surname,   1),'') as Mnemonic
    from Persons
    

    【讨论】:

      【解决方案2】:

      对字符串文字使用单引号而不是双引号并计算大括号:

      SELECT 
        forename, 
        forename2, 
        surname,
        COALESCE(LEFT(forename, 2),'') + COALESCE(LEFT(forename2, 1),'') + COALESCE(LEFT(surname, 1), '') as Mnemonic
      from Persons
      

      【讨论】:

        【解决方案3】:

        看起来你提到的“麻烦”是因为使用了错误的括号和双引号。

        以下查询返回1123

        SELECT   COALESCE(LEFT(null, 2), '')  
                 + COALESCE(LEFT('1111', 2), '') 
                 + COALESCE(LEFT('2222', 1),'') 
                 + COALESCE(LEFT('3333', 1), '')
        

        【讨论】:

          【解决方案4】:

          该语句甚至不会按原样编译。

          • 您不需要第二个 SELECT 语句,因为您不执行子查询。
          • 您需要使用单括号。双括号用于对象名称(即表、过程等)。
          • 括号太多

          试试:

          SELECT forename, forename2, surname,
              COALESCE(LEFT(forename, 2),'') +
              COALESCE(LEFT(forename2, 1),'') + 
              COALESCE(LEFT(surname, 1), '') as Mnemonic
          from Persons
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-11-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多