Apache Derby Lexical Ошибка на # -sign? - PullRequest
1 голос
/ 17 августа 2011

Я программно переношу данные между сервером DB2 и сервером Apache Derby (JavaDB).

На сервере DB2 есть несколько таблиц с именами столбцов, которые содержат символ решетки (#).Однако при попытке создать таблицы в Derby:

CREATE TABLE LIBNAME.TABNAME  
(COL# decimal(3,0),  
REC# decimal(5,0),  
DESC char(30,0),  
SDSC char(10,0));

появляется следующая ошибка:

ОШИБКА 42X02: Лексическая ошибка в строке 1, столбце 38. Обнаружено: "#"(35), после:" "

Справочное руководство по Derby не поможет;приведенное объяснение для кода ошибки 42X02 просто <value>

Это простая задача - удалить знак фунта из имен столбцов для Derby, а затем добавить его обратно для DB2, но я бы хотел этого избежать, еслиЯ могу.

Кто-нибудь случайно узнал, что Дерби просто не допускает символ # (и почему?) Или я что-то не так делаю ...

1 Ответ

2 голосов
/ 17 августа 2011

Согласно справочному руководству по Derby ( Правила для идентификаторов SQL92 ):

Обычные идентификаторы - это идентификаторы, не заключенные в двойные кавычки. Идентификаторы с разделителями - это идентификаторы, заключенные в двойные кавычки.

Обычный идентификатор должен начинаться с буквы и содержать только буквы, символы подчеркивания (_) и цифры. Разрешенные буквы и цифры включают все буквы и цифры Unicode, но Derby не пытается гарантировать, что символы в идентификаторах действительны в локали базы данных.

Идентификатор с разделителями может содержать любые символы в двойных кавычках. Заключенные в двойные кавычки не являются частью идентификатора; они служат только для обозначения его начала и конца. Пробелы в конце идентификатора с разделителями незначительны (усечены). Derby переводит две последовательные двойные кавычки в идентификаторе с разделителями в одну двойную кавычку, то есть «переведенная» двойная кавычка становится символом в идентификаторе с разделителями.

Итак, COL# представляется недействительным как обычный идентификатор из-за #. "COL#", вероятно, будет действительным в качестве идентификатора с разделителями, но я не проверял это.

...