热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

FirebirdJaybird2.2.10/ColdFusion2018-字符串长度错误

如何解决《FirebirdJaybird2.2.10/ColdFusion2018-字符串长度错误》经验,为你挑选了1个好方法。

我不确定这是否是ColdFusion 2018错误,或者它是否是ColdFusion 2018实施Firebird 2.5的Jaybird 2.2.10驱动程序的方式。

我有一个表,其中包含名为“ item_date”的列。此列具有Firebird“日期”数据类型。在ColdFusion 10中,以下查询根据返回的月份显示正确的字符串长度。但是,在ColdFusion 2018中,所有字符串的长度返回为9。几乎就像ColdFusion将结果集分配为CHAR(9)数据类型,而不是应有的VARCHAR。

我的概念证明代码示例如下所示。


    SELECT 
        CASE EXTRACT (MONTH from item_date)
        WHEN 1 THEN 'January'
        WHEN 2 THEN 'February'
        WHEN 3 THEN 'March'
        WHEN 4 THEN 'April'
        WHEN 5 THEN 'May'
        WHEN 6 THEN 'June'
        WHEN 7 THEN 'July'
        WHEN 8 THEN 'August'
        WHEN 9 THEN 'September'
        WHEN 10 THEN 'October'
        WHEN 11 THEN 'November'
        WHEN 12 THEN 'December'
        END itemMonth
    FROM    MY_TABLE



    #test.itemMonth# - Length: #Len(test.itemMonth)#

运行此命令时,期望结果显示出来

9月-长度:8
月9 日-长度:6
..以此类推。

但是,显示的全部长度为9。如果月份是4个字符的6月,则结果仍显示为9。这就像ColdFusion或Jaybird驱动程序在字段末尾添加了额外的空格,就像出于某种原因在结果中将其定义为CHAR类型一样。

使用相同的Firebird 2.5和Jaybird 2.2.10驱动程序的ColdFusion 10不会发生这种情况。
使用SQL Server代替Firebird时在ColdFusion 2018中也不会发生这种情况

这是一个很大的问题,因为在检查等于“字符串”的结果时,它导致字符串比较失败。例如,如果我拉查询查询以查找itemMOnth='October'的位置,则不会返回任何结果,因为结果的'October'带有2个额外的空格。

这是ColdFusion 2018中的错误吗?Jaybird驱动程序中的错误?任何帮助是极大的赞赏!



1> Mark Rotteve..:

不幸的是CHAR,Firebird中的字符串文字是- ,而不是VARCHAR。类型的值CHAR用空格填充,直到声明的长度为止。在a中使用字符串文字时CASE,结果数据类型将具有最长文字的长度,即September,因此结果的类型为a CHAR(9),而较短的值将全部填充长度为9的空格。

我不知道ColdFusion,但是看起来ColdFusion 10会自动修剪值,并且不再在ColdFusion 2018中执行此操作。您将需要手动修剪-在您的ColdFusion代码或查询中-以达到所需的效果,或者寻找可以控制此行为的设置。

顺便说一句,Jaybird 2.2.10(2016年3月)不是最新的2.2,即Jaybird 2.2.15(2019年4月)。Jaybird 2.2已停产,将不会再有更新。此时的整体最新Jaybird为3.0.6(2019年5月)。

ColdFusion修复

Phil最初添加到问题中的ColdFusion中的解决方法是:

对于希望此功能一如既往地工作的任何人,ColdFusion会在其中自动修剪尾随空格,这可以使用下面的JVM参数来实现。

-Dcoldfusion.trim.dbresult=true

https://tracker.adobe.com/#/view/CF-4100830

根据该链接,默认情况下,行为在ColdFusion 11中已更改为不再修剪,并且在ColdFusion 11 Update 7中引入了此属性以启用旧的行为。


推荐阅读
author-avatar
-刘耀宗_690
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有