首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL在搜索查询中不返回波斯语和英语数字

MySQL在搜索查询中不返回波斯语和英语数字
EN

Stack Overflow用户
提问于 2012-07-23 13:04:37
回答 1查看 497关注 0票数 2

在MySQL中,我的数据库和表的排序规则是utf8_persian_ci。这个特定的排序,不像utf8_general_ci,认为相同的权重"1","2","3",.还有“۱”,“۲”,“۳”(后者是波斯数字格式)。同样的权重意味着在搜索查询中应该返回波斯语和拉丁语格式。虽然我的数据库、表,甚至collation_server (我用my.cnf定义的)都是utf8_persian_ci,但是我的搜索查询不返回波斯和拉丁数字:

表:

代码语言:javascript
复制
 --------
|  col   |
|--------|
|   1    |
|--------|
|   ۱    |
----------

( col类型为varchar)

查询:

代码语言:javascript
复制
SELECT * FROM my_tbl tbl where tbl.col like "1"

结果:

代码语言:javascript
复制
 --------
|  col   |
|--------|
|   1    |
|--------|

我发现以下查询返回我想要的结果:

代码语言:javascript
复制
SELECT * FROM my_tbl tbl where tbl.col like "1" collate utf8_persian_ci

返回:

代码语言:javascript
复制
 --------
|  col   |
|--------|
|   1    |
|--------|
|   ۱    |
----------

我的第一个问题是,我不知道为什么要编写排序规则utf8_persian_ci,尽管MySQL服务器和数据库的默认排序规则是utf8_persian_ci。

我的第二个问题是,我正在处理的应用程序是使用JPA。因此,我正在编写的查询是JPQL,它不支持排序规则utf8_persian_ci。在JPQL中,我需要一个排序规则utf8_persian_ci的等价代码,或者我应该在查询结束时将MySQL配置为不使用collate utf8_persian_ci,并获得指定的结果。

EN

Stack Overflow用户

回答已采纳

发布于 2012-07-23 13:32:09

虽然服务器、数据库和表的默认排序规则是utf8_persian_ci,但此类默认值可能已被列本身的定义覆盖。

可以在列上强制执行所需的排序规则;例如:

代码语言:javascript
复制
ALTER TABLE my_tbl MODIFY col VARCHAR(123) COLLATE utf8_persian_ci
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11613127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档