阿拉伯语SQL查询(在Oracle DB上)返回空结果

时间:2010-06-06 13:10:07

标签: sql oracle

我有这个查询(在Oracle 10g数据库上运行):

SELECT ge.*, ge.concept AS glossarypivot 
FROM s_glossary_entries ge 
WHERE (ge.glossaryid = '161' OR ge.sourceglossaryid = '161') 
AND (ge.approved != 0 OR ge.userid = 361)  
AND concept like 'م%'  ORDER BY ge.concept 

查询必须显示以阿拉伯字母“م”开头的所有单词 但不幸的是,它返回空结果..

但是,如果我在MYSQL上运行的同一个数据库上运行相同的查询,它运行良好并显示正确的结果..

并且,如果我使用英文字母(m)运行相同的查询,如下所示:

SELECT ge.*, ge.concept AS glossarypivot 
FROM s_glossary_entries ge 
WHERE (ge.glossaryid = '161' OR ge.sourceglossaryid = '161') 
AND (ge.approved != 0 OR ge.userid = 361)  
AND concept like 'm%'  ORDER BY ge.concept 

它正确显示结果而不是空!!

为了在oracle 10数据库上以正确的方式运行此查询,我该怎么做?

P.S。 oracle数据库字符集是:“AL32UTF8”

提前非常感谢

4 个答案:

答案 0 :(得分:0)

确定这适用于MySQL?我会做这个部分:

AND concept = 'م'
像这样:

AND concept LIKE 'م%'

或者因为它是阿拉伯语,第一个字符是正确的:

AND concept LIKE '%م'

但我不知道Oracle是否有LIKE,我从未与Oracle合作过。

答案 1 :(得分:0)

如果我输入一个UTF8字符:“ظ...”而不是阿拉伯字符“م”它将在oracle上运行...

答案 2 :(得分:0)

显而易见的问题是,您是否有匹配的数据。

您可以使用SELECT DUMP(概念),DUMP('م')FROM ...来查看实际形成值的字节。我的数据库给了我217/133。我相信有些字符可以在UTF-8中使用不同的字节,但物理外观相同,但我不能说这是否是其中之一。

另请参阅Globalization指南。

答案 3 :(得分:0)

我想知道你的oracle客户端代码页中的不匹配。它应该在与数据库相同的字符集中定义,否则会有一些字符转换。