2010-06-06 72 views
1

我有这个疑问(即在Oracle 10g数据库上运行):阿拉伯语SQL查询(在Oracle DB)返回空的结果

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”

非常感谢你提前

回答

0

确保该工程在MySQL?我会做这部分:

AND concept = 'م' 

这样的:

AND concept LIKE 'م%' 

或因为它是阿拉伯和第一个字符是一个像这样的权利:

AND concept LIKE '%م' 

但我不知道如果Oracle甚至有LIKE,我从来没有与Oracle合作过。

+0

我编辑了查询,我很抱歉错误...请再看看这个问题... 是的,它适用于mysql ... – JaHelia 2010-06-06 13:46:00

+0

你确定'%'是正确的方式而不是'%''?因为它是阿拉伯... – kalkin 2010-06-07 12:05:44

0

如果我把一个UTF8字符:“ظ......”,而不是阿拉伯字符“م”将在Oracle工作...

0

最明显的问题是,你是否有匹配数据。

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

另请参阅Globalization指南。

0

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