麻烦在sql中使用COALESCE函数

时间:2012-02-13 11:56:43

标签: sql sql-server coalesce

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

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

试图得到,前2个字母的字母,forename2的第一个字母(如果not null),以及姓氏的第一个字母(如果不是null),“”空字符串,其中存在null。

任何帮助将不胜感激, 此致,Bserk

4 个答案:

答案 0 :(得分:5)

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

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

试试这个:

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

以下查询返回1123

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

答案 3 :(得分:0)

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

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

尝试:

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