ORA-12704: несоответствие набора символов в регистре - PullRequest
1 голос
/ 03 мая 2019

Получение ошибки несоответствия, даже если оба являются NVARCHAR2 (50).они выглядят прекрасно отдельно.

select O.MEDIC_NO
,O.PRO_TIN
,CASE WHEN O.MEDIC_NO IS NULL THEN '' ELSE O.PRO_TIN END AS PRO_TIN_PREVIOUS
from Q119 o

Ответы [ 2 ]

4 голосов
/ 03 мая 2019

Проблема, скорее всего, в строковом литерале не NVARCHAR2 (50).Каждая ветвь CASE должна возвращать значение того же типа.

select O.MEDIC_NO
,O.PRO_TIN
,CASE WHEN O.MEDIC_NO IS NULL THEN cast('' as NVARCHAR2(50))
      ELSE O.PRO_TIN END AS PRO_TIN_PREVIOUS
from Q119 o
1 голос
/ 03 мая 2019

Первый элемент в СЛУЧАЕ, КОГДА в списке THEN определяется набор символов / тип данных, используемый для остальной части списка. Здесь это пустая строка (вероятно, VARCHAR2), и ваш O.PRO_TIN не совпадает с типом charset / datatype (не совместим)

Попытайтесь привести ваш пустой поток к тому же типу, что и O.PRO_TIN, или попробуйте поменять местами логику, чтобы O.PRO_TIN был первым (CASE WHEN x IS NOT NULL THEN O.PRO_TIN ELSE '' END)

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