2015-05-18 9 views
0

когда называют этот кодjooq - выберите удаляет информацию о длине VARCHAR литых

DSLContext dslContext = DSL.using(SQLDialect.SQLSERVER); 
dslContext.select(DSL.cast(field, SQLDataType.VARCHAR.length(255))); 

ВЫБРАТЬ оператор удаляет информацию длины VARCHAR. Метод DSL.cast() возвращает cast("fieldName" as varchar(255)), а выбор возвращает select cast("fieldName" as varchar).

Проблема заключается в том, что в SQLServer информация о листе без длины сокращает результат после 30 символов, который описан here. Это очень неприятно, потому что мои значения составляют более 30 символов. Так есть кто-нибудь, как я могу получить инструкцию select, которая выглядит так: select cast("fieldName" as varchar(255))?

+0

Какую версию jOOQ вы используете? –

+0

Я использую jooq-codegen-maven 3.0.0. – Simone

+0

Связанный вопрос: http://stackoverflow.com/questions/18401667/jooq-casting-string-to-bigdecimal –

ответ

0

длина, точность и масштаб информация о DataType была введена только в jOOQ 3.0, хотя эта информация не была использована в CAST() выражениях до jOOQ 3,2 (issue #2708):

Последней версия jOOQ правильно делает

cast([fieldName] as varchar(255)) 

Итак, предлагаю обновить до последней версии.

Кроме того, если ваша версия/использование генерирует cast("fieldName" as varchar), я подозреваю, что вы также можете пропустить неправильный SQLDialect (вместо SQLSERVER). С диалектом SQLSERVER идентификаторы генерируются с использованием [brackets], в отличие от других диалектов, которые используют "double quotes" для идентификаторов ...

+0

Спасибо. Вы правы, это синтаксис для SQLServer, который использует скобки. Я пробовал разные диалекты - все они ведут себя одинаково, поэтому я перепутал пример. – Simone

+0

@ Симон: Хорошо, просто хотел быть уверенным в диалекте :) Так и работа над обновлением? –

+0

Да. Кстати, как выражения выражений ведут себя в concat выражениях, если в поле есть varchar с длиной? Что-то вроде этого DSL.concat(DELIM, table.val) Simone

 Смежные вопросы

  • Нет связанных вопросов^_^