Несоответствие набора символов - PullRequest
3 голосов
/ 10 июля 2009

У меня есть такой 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

Я получаю сообщение об ошибке «Несоответствие набора символов» в части «ELSE» в выражении CASE. Может кто-нибудь подсказать, где я делаю это неправильно? Спасибо.

Ответы [ 4 ]

2 голосов
/ 24 июля 2009

Вы не можете объединить значения VARCHAR и NVARCHAR без оператора CAST.

1 голос
/ 08 июня 2012
CASE WHEN TRIM(c.ColumnC) IS NOT NULL 
     THEN ' (' || c.ColumnC || ')' 
     ELSE N'' END A

является более кратким решением. N '' дает вам пустую строку в юникоде

0 голосов
/ 21 октября 2012

Просто сотрите ELSE, чтобы ваш код было легче читать

0 голосов
/ 10 июля 2009

Вы пытались заменить '' на NULL? Кроме того, попробуйте удалить часть ELSE, так как она все равно вернет NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...