2011-05-13 74 views
2

不幸的是,我们正在使用Advantage数据库服务器Torture Edition版本8.1。 完成我的项目后,我听说数据库配置为区分大小写。于是我改变了表结构,把所有的Char数据类型都改为CIChar,这是一个不区分大小写的字段。但是,我得到这个错误在执行我的计划:Advantage数据库服务器(ADS)CIChar数据类型ISNULL

Advantage.Data.Provider.AdsException: 

Error 7200: AQE Error: State = HY000; NativeError = 2214; [Extended Systems][Advantage SQL Engine]Invalid coercion: Result of expression is an ambiguous character type.

我发现ISNULL(myciChar,“”)是导致此问题,但我不明白,为什么呢? 我该如何解决这个问题? cichar数据类型是否存在其他已知问题?

任何帮助将不胜感激。谢谢。

[更新]

我发现这个错误的原因。有两点需要澄清。

  1. 数据库版本为8.1,但数据架构师版本为7.1,在本地模式下,架构师引擎版本为7.1。这意味着这是一个v7.1的问题。
  2. isnull函数中的第二个参数是版本7.1中的默认区分大小写排序规则,而我的列mytext是cichar,这是模糊字符类型。因此,如果有人有同样的问题,它会在V7.1工作与整理声明:在V7.1

作品:

select myid, isnull(mytext, '-' COLLATE ads_default_ci) as mytext from mytable 

错误V7.1:

select myid, isnull(mytext, '-') as mytext from mytable 

回答

1

可能需要查看更多的表情来告诉您为什么会出现此错误。它与ISNULL没有太大关系,因为它使用的是ISNULL表达式。引擎可能遇到了比较,并且无法自动确定是否希望比较区分大小写。请参阅the documentation,其中描述了不区分大小写的优先级和强制。

如果在表达式中不使用,它可能只是一个错误(我只是尝试用10.1和它的工作),确认您使用的是最新版本的8.1,这是8.10.0.38

+0

谢谢!看到我的更新。 – ibram 2011-05-16 12:24:31

0

我不t认为版本7支持cichar数据类型,版本6当然不支持。我使用的是版本6,直接到8,发现所有的东西都可以在版本6的客户端驱动程序中工作,直到我使用cichar数据类型,然后它就是Advantage的游戏。然后我必须将所有客户端更新为与服务器相同的版本。最好保持所有版本相同。

相关问题