首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux数据库>mysql>正文

怎样正确的解决 MySQL 中文模糊检索问题

http://www.oklinux.cn  2008-01-08  来源: oklinux收集   会员收藏  游客收藏  【 】 

在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的记录,如查找 "%a%" 时,返回的可能有中文字符,却没有 a 字符存在。本人以前也曾碰到过类似问题,经具体阅读 MySQL 的 Manual ,发现可以有一种方法很方便的解决并得到满足的结果。


例子:


·希望通过“标题”对新闻库进行检索,要害字可能包含是中英文,如 下 SQL 语句:



select id,title,name from achech_com.news where title like '%a%'


返回的结果,某些 title 字段确定带了“a”要害字,而有些则只有中文,但也随之返回在检索结果中。


解决方法,使用 BINARY 属性进行检索,如:


select id,title,name from achech_com.news where binary title like '%a%'


返回的结果较之前正确,但英文字母区分大小写,故有时在检索如“Achech”及“achech”的结果是不一样的。知道了使用 BINARY 属性可以解决前面这个问题,再看看 MySQL 支持的UCASE 及 CONCAT 函数,其中 UCASE 是将英文全部转成大写,而 CONCAT 函数的作用是对字符进行连接,以下是我们完全解决后的 SQL 语句:


select id,title,name from achech_com.news
where binary ucase(title) like concat('%',ucase('a'),'%')


检索的步骤是先将属性指定为 BINARY ,以精确检索结果,而被 like 的 title内容存在大小写字母的可能,故先使用 ucase 函数将字段内容全部转换成大写字母,然后再进行 like 操作,而 like 的操作使用模糊方法,使用 concat的好处是传进来的可以是直接的要害字,不需要带“%”万用符,将“'a'”直接换成你的变量,在任何语言下都万事无忧了。 当然也可以这样来写:


select id,title,name from achech_com.news
where binary ucase(title) like ucase('%a%')




上一篇:轻松了解十个重要的 MySQL客户启动选项   下一篇:怎样修改 MySQL数据库中的密码


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·怎样修改 MySQL数据库中的密码
·轻松了解十个重要的 MySQL客户启动选项
·怎样在MySQL中获得更好的搜索结果
·MySQL 搜索中的大小写敏感性
·怎样在Windows下升级MySQL
·如何正确的解决 MySQL中忽略用户的现象
·如何正确的更改表中的列顺序
·轻松掌握怎样测试 MySQL安装
·快速掌握如何发布更新以及何时发布更新
·MySQL数据库中Show命令的用法
·MySQL的数字类型以及建库策略
·MySQL 备份和恢复策略
·MySQL 备份和恢复策略(二)
·MySQL 备份和恢复策略(三)
·MySQL查询结果的分页显示
·MySQL对“服务器端光标”的 限制
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·深入讲解"InnoDB"和"MyISAM"的不同之处
·MySQL的存储过程写法和"Cursor"的使用
·如何安装配置基于2台服务器的MySQL集群
·带你轻松接触一个检测MySQL状态的脚本
·实例讲解"MySQL"在记录不存在时的插入
·无需编程直接利用图形界面导入导出的方
·教你快速掌握 MySQL数据库中触发器的应
·解析:怎样在MySQL中获得更好的搜索结果
·将数据从MySQL迁移到 Oracle的注意事项
·细化解析:怎样修改 MySQL数据库中的密
·解析:优化MySQL数据库性能的几个好方法
·教你轻松掌握如何保护MySQL中的重要数
  阅读排行
·Linux 安装 Mysql
·如何在Linux系统中安装MySQL
·在Linux 环境下安装 Mysql
·在Linux上安装MySQL Server 5.0
·图形化管理MySQL更轻松
·[Mysql]IIS+mysql+php相关知识介绍
·MySQL创始人David Axmark 访谈实录
·你应该知道的10个MySQL客户启动选项
·Heartbeat_2.0.3配置MySQL5.0.8集群
·Linux系统上安装MYSQL数据库的方法
·[MySQL]入门学习从安装入门到学习操作
·MySQL中文参考手册-创造并使用数据库
·MySQL5.0新特性教程 存储过程:第三讲
·MySQL 5.0新特性教程 存储过程:第一讲
·[Mysql]Mysql数据库管理系统优化方案
网摘收藏: