jooq - select 删除 cast 的 varchar 长度信息
jooq - select removes varchar length information of cast
调用此代码时
DSLContext dslContext = DSL.using(SQLDialect.SQLSERVER);
dslContext.select(DSL.cast(field, SQLDataType.VARCHAR.length(255)));
select语句删除了varchar长度的信息。
DSL.cast() 方法 returns cast("fieldName" as varchar(255))
和 select returns select cast("fieldName" as varchar)
.
问题在于,在 SQLServer 中,没有长度信息的转换会在 here 描述的 30 个字符后截断结果。这非常烦人,因为我的值超过 30 个字符长。那么有没有人知道我怎样才能得到一个看起来像这样 select cast("fieldName" as varchar(255))
的 select 语句?
关于 DataType
were introduced only in jOOQ 3.0, although that information was not used in CAST()
expressions until jOOQ 3.2 (issue #2708 的长度、精度和比例信息:
最新版本的 jOOQ 正确呈现
cast([fieldName] as varchar(255))
所以,我建议升级到最新版本。
此外,如果您的版本/用法生成 cast("fieldName" as varchar)
,我怀疑您也可能传递了错误的 SQLDialect
(而不是 SQLSERVER
)。使用 SQLSERVER
方言,标识符是使用 [brackets]
生成的,这与其他使用 "double quotes"
作为标识符的方言不同...
调用此代码时
DSLContext dslContext = DSL.using(SQLDialect.SQLSERVER);
dslContext.select(DSL.cast(field, SQLDataType.VARCHAR.length(255)));
select语句删除了varchar长度的信息。
DSL.cast() 方法 returns cast("fieldName" as varchar(255))
和 select returns select cast("fieldName" as varchar)
.
问题在于,在 SQLServer 中,没有长度信息的转换会在 here 描述的 30 个字符后截断结果。这非常烦人,因为我的值超过 30 个字符长。那么有没有人知道我怎样才能得到一个看起来像这样 select cast("fieldName" as varchar(255))
的 select 语句?
关于 DataType
were introduced only in jOOQ 3.0, although that information was not used in CAST()
expressions until jOOQ 3.2 (issue #2708 的长度、精度和比例信息:
最新版本的 jOOQ 正确呈现
cast([fieldName] as varchar(255))
所以,我建议升级到最新版本。
此外,如果您的版本/用法生成 cast("fieldName" as varchar)
,我怀疑您也可能传递了错误的 SQLDialect
(而不是 SQLSERVER
)。使用 SQLSERVER
方言,标识符是使用 [brackets]
生成的,这与其他使用 "double quotes"
作为标识符的方言不同...