使用变异元音(元音变音)组合整理和转义函数时,SQL 查询不返回结果

问题描述 投票:0回答:1

我有一个这样的查询:

SELECT DISTINCT name
FROM table
WHERE name COLLATE BINARY_AI LIKE '%ög%' ESCAPE '\';

预期的行为是它返回包含

ög
的名称,例如:

Högendorf

但是,例如,也可以只包含

og
的名称,例如:

Vogel

但是,执行此查询不会提供任何结果。 作为参考,名称的数据类型是 CHAR(30)

如果我稍微改变它以使用

'%og%'
代替:

SELECT DISTINCT name
FROM table
WHERE name COLLATE BINARY_AI LIKE '%og%' ESCAPE '\';

它突然起作用并提供了预期的结果。 如果我保留

'%ög%'
但删除查询的
ESCAPE '\'
部分,它也会这样做。

SELECT DISTINCT name FROM table WHERE name COLLATE BINARY_AI LIKE '%ög%';
如果我删除 

COLLATE BINARY_AI

 但保留 
ESCAPE '\'
,它可以工作,但找不到像 
Vogel
 这样的结果

如果我向

COLLATE BINARY_AI

 添加第二个 
'%ög%'
,它也根本不会返回任何结果。

为什么会发生这种情况?我该如何解决这个问题以便保留 ESCAPE 功能?

sql oracle escaping collate
1个回答
0
投票
是的,这是不对的!

此问题已在

Oracle Database 23c Free 版本中修复:

select banner_full from v$version; BANNER_FULL ------------------------------------------------------------------------------- Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free Version 23.3.0.23.09 create table t ( c1 varchar2(30) ); insert into t values ( 'Högendorf' ); insert into t values ( 'Vogel' ); select * from t where c1 collate binary_ai like '%ög%' escape '\'; C1 ------------------------------ Högendorf Vogel
如果您需要解决此问题,请与支持人员联系。

© www.soinside.com 2019 - 2024. All rights reserved.