我有一个这样的SQL语句:
SELECT
a.ColumnA, b.ColumnB ||
CASE WHEN TRIM(c.ColumnC) IS NOT NULL THEN ' (' || c.ColumnC || ')' ELSE '' END AS ClassName
FROM TableA a INNER JOIN TableB b ON a.SomeColumn = b.SomeColumn
INNER JOIN TableC c on a.SomeCol = c.SomeCol
我在CASE表达式的“ELSE”部分收到错误“字符集不匹配”。 有人可以建议我做错了吗?谢谢。
答案 0 :(得分:2)
如果没有CAST语句,则无法连接VARCHAR和NVARCHAR值。
答案 1 :(得分:1)
CASE WHEN TRIM(c.ColumnC) IS NOT NULL
THEN ' (' || c.ColumnC || ')'
ELSE N'' END A
是一种更简洁的解决方案。 N''给你一个unicode空字符串
答案 2 :(得分:0)
你尝试用NULL替换''吗? 另外,请尝试完全删除ELSE部分,因为无论如何它都会返回NULL。
答案 3 :(得分:0)
只需擦除ELSE,就可以使代码更易于阅读