今天在做mysql的一个搜索的时候发现我用 select name from contact where name like

'%a%'的时候出来的结果除了包含a的名字外连包含中文“新”的名字也出现在搜索结果里面,这令我想弄清楚mysql的匹配模式和规则到底是怎么样的,

所以决定查查资料了解了解,另外在匹配的时候正则表达式也很常用!所以准备在这里记录我学习这两个玩意的收获!

出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中

中文编码字符大小写转换造成了这种现象。

解决办法

1.在建表的时候对于包含中文的字段加上“BINARY”属性,使之进行二进制比

较,例如讲"name char(10)"改成"name char(10) BINARY"。但是这样你对该表的该字段进行匹配的时候是区分大小写的。

2.

如果使用源码编译MySQL,可以在编译的时候使用--with--charset=gbk参数,这样mysql就直接支持中文查找和排序。

3.

使用mysql的locate函数来判断。如:

SELECT * from table WHERE

locate(substr,str)>0 ;

locate()有两个形式:

LOCATE(substr

,str

)

,

LOCATE(substr

,str

,pos

)。返回substr在str中的位置,如果str不包含substr返回0。这个函数也是不

区分大小写的。

4.这样使用sql语句:SELECT * from TABLE WHERE FIELDS LIKE BINARY

'%FIND%',但是这和1一样是区分大小写的如果你想进行不区分大小写的查询的时候就要使用upper或者lower进行转换。

5.使用

binary和ucase函数及concat函数。ucase是讲英文全部转换大写,concat对字符串进行连接。新的sql语句如下:

select id,title,name from achech_com.news where binary ucase(title)

like concat('%',ucase('a'),'%')

也可以写为select

id,title,name from achech_com.news where binary ucase(title) like

ucase('%a%')

检索的结果还算满意吧,不过速度可能会因此而慢N毫秒喔。 因为使用like和%进行匹配的话对效率会有一定的影响。

正则表达式:

则表达式是为复杂搜索指定模式的强大方式。

^

匹配的字符串以后面的字符串开头

mysql> select "fonfo" REGEXP "^fo$"; ->

0(表示不匹配)

mysql> select "fofo" REGEXP &

mysql 正则表达式 包含中文_MYSQL 中文检索匹配与正则表达式相关推荐

  1. mysql搜索中文 有的匹配不出来_MYSQL-中文检索匹配与正则表达式

    今天在做mysql的一个搜索的时候发现我用 select name from contact where name like '%a%'的时候出来的结果除了包含a的名字外连包含中文"新&qu ...

  2. mysql 中文匹配_MYSQL-中文检索匹配与正则表达式

    今天在做mysql的一个搜索的时候发现我用 select name from contact where name like '%a%'的时候出来的结果除了包含a的名字外连包含中文"新&qu ...

  3. mysql编码是乱码_mysql中文乱码 常见编码问题解决方法分享

    我是真的服了 mysql默认字符不是utf-8也不是GBK而是拉丁文字?? 在增删数据时 "中文字符" 老是乱码不停!害得我浪费不少时间在这上面 为各位之后不走坑 再此留下解决方法 ...

  4. mysql 汉字转拼音_mysql --中文转汉语拼音,取首字母

    直接上需求 1.地点表如下 原数据库表是没有FIRST_LETTER这个字段的. 需求:在原表的基础上增加一列,要求该列是字段LOCATION_NAME拼音的首字母. 直接上SQL Select lo ...

  5. mysql字符串转拼音_MySQL中文字段转拼音

    准备:数据库中一下一个表结构 现在要实现对字段 display_name第一个字符转成拼音,即实现字段 pinyin中的效果,可以直接这样 SELECT display_name, ELT(INTER ...

  6. mysql 拼音转汉字_Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    -- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yin_` varchar(255) CHARACTER SET gb ...

  7. mysql like反义_MySQL条件检索_WHERE

    mysql> select num,name from courses where name=.'语文'; +-----+--------+ | num | name | +-----+---- ...

  8. mysql正则提取字符串_mysql字符串查找截取与正则表达式的联合应用

    /* 判断字符串里的内容是否是数值类型 **************************************************** is_double 输入参数: str:       ...

  9. mysql 正则截取字符串_mysql字符串查找截取与正则表达式的联合应用 | 学步园

    /* 判断字符串里的内容是否是数值类型 **************************************************** is_double 输入参数: str:       ...

  10. mysql数据库的查询_mysql数据库查询

    查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...

最新文章

  1. 一些java基本程序图解1
  2. html文件url_for加载静态文件
  3. C++ 读入优化与输出优化 模板
  4. c 窗体程序 mysql_C\C++开发MySQL程序简介(下)
  5. 几个OpenSource的源代码管理软件
  6. React之函数中的this指向
  7. 重物码垛搬运机器人_节卡机器人:5G下的智慧物流——柔性生产物流系统
  8. sql server代理无法启动_谁说前端不需要懂Nginx反向代理与负载均衡
  9. tasker运行java_Tasker 打开桌面快捷方式(以微信公众号为例)[No Root]
  10. zabbix分布式监控部署proxy安装
  11. 模板引擎工作原理_zuma致:新手SEO须知搜索引擎工作原理
  12. PostgreSql 常用 ALTER 语句
  13. 一句话理解cmp_to_key函数
  14. 移动云计算中选择推广应用程序的战术
  15. “东华春秋杯”上海大学生网络安全技能大赛决赛收官 聚焦高校人才培养
  16. 微信正式支持注册小号,但不是谁都可以
  17. Activiti 流程部署方式 activi 动态部署(高级源码篇)
  18. 噪声分析基础(公式)知识
  19. 创建json数组与json数组渲染到HTML
  20. 小型企业5种实惠的品牌建立策略

热门文章

  1. pythonshell窗口是什么_使用IDLE的Python shell窗口实例详解
  2. 在c# winform 的 monthCalendar 里粗体凸显有数据的日期
  3. TV新媒体电商发展遇瓶颈
  4. 线性代数在计算机中的应用论文,论线性代数在现实生活中的应用(结课论文)
  5. 国内的 App 推广渠道有哪些?
  6. 数据基础-索引和完整性(约束)
  7. 社群裂变工具有哪些?裂变活动成功的4个关键点!
  8. 常用的vim命令,主要是写给宝贝儿方便工作查看的
  9. php 实现贪吃蛇游戏,php编写的贪吃蛇游戏
  10. springboot Basic Auth 暴露API 访问认证