我正在尝试执行以下操作:
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
答案 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 forename, forename2, surname,
COALESCE(LEFT(forename, 2),'') +
COALESCE(LEFT(forename2, 1),'') +
COALESCE(LEFT(surname, 1), '') as Mnemonic
from Persons