У меня есть 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
я получаю ошибку «Character установить несоответствие» в «ELSE„“» часть выражения CASE. Может кто-нибудь предложить, где я делаю это неправильно? Спасибо.
Как определяются столбцы ColumnB и ColumnC? Работает ли запрос без предложения ELSE? – Plasmer
Нет проблем с оператором (предположим, что последнее соединение также относится к a, b SomeColumn, и вы просто сократили имя столбца). Не могли бы вы обновить вопрос с информацией о наборе символов базы данных? – dpbradley
Я нашел ответ. Нам нужно CAST часть ELSE с тем же типом, что и ColumnC. Может быть, он знает тип данных результата выражения CASE. Итак, это: CASE WHEN ...... ELSE CAST ('' AS NVarchar2 (1)) END – 2009-07-10 14:55:17