【发布时间】:2015-02-10 23:40:31
【问题描述】:
我的 Advantage 数据库中有类似的内容:-
drop table #test;
create table #test (x cichar(50));
insert into #test (x) values ('cheese');
insert into #test (x) values ('fromage');
insert into #test (x) values ('Queso');
select
t1.x t1_x,
t2.x t2_x
from
#test t1
inner join
(
select
'CHEESE' x // String literal will be of type VARCHARFOX
from
system.iota
) t2
on t1.x=t2.x
这给了我信息:-
poQuery:错误 7200:AQE 错误:状态 = HY000;本机错误 = 2213; [iAnywhere 解决方案] [Advantage SQL 引擎]无效比较或 对具有不同排序规则的字符串进行操作。 ** 脚本错误 信息: -- SQL 语句中的错误位置为:137(行: 5 列:1)
当我想要时:-
t1_x t2_x
cheese CHEESE
这是因为 'CHEESE' 字符串文字变成了 VARCHARFOX 类型,而临时表中的列是 cichar 类型,因为我想要不区分大小写的比较。
我可以通过在比较中添加“COLLATE ads_default_ci”来修复此实例,但这很麻烦,而且我永远记不起它的确切语法。
我认为我必须对列类型或数据库配置做一些根本性的错误,这样做的优雅/正确方法是什么?
【问题讨论】:
标签: sql collation case-sensitive advantage-database-server