我有这个查询(在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”
提前非常感谢
答案 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客户端代码页中的不匹配。它应该在与数据库相同的字符集中定义,否则会有一些字符转换。