今天在做项目的时候遇到一个功能,需要对字段内容模糊查询,不区分大小写

在建表的时候,使用varchar,char..存储,在查询的时候不区分大小写,name='a' 和 name='A'会得到同样的结果

需要使用binary 辅助才能区分

现在我这里有个相反的例子

其中表 cs_course 中name字段是采取varbinary字段存储的(编码是UTF8)

数据如下

mysql> select name from cs_course;

+--------------------+

| name |

+--------------------+

| Poetry |

| Poetry 2 |

| 涓€鍒嗛挶 |

| 璇楁瓕 |

| 瓒呭競鑻辫 |

| 椋炴満鑻辫 |

| ddddd |

| 鍙hA |

| 鍙hA |

| 鍙hB |

需求是需要模糊查询出相关数据

mysql> select name from cs_course where name like '%p%';

+--------------+

| name |

+--------------+

| think in php |

+--------------+

1 row in set (0.00 sec)

这不是我想要的,因为我的字段用的是varbinary存储,mysql 会区分大小写,而我想要的是不区分大小写,连同大写的P的内容一并查找出来,于是想到把字段转换成小写再来匹配

mysql> select lower(name) from cs_course;

+--------------------+

| lower(name) |

+--------------------+

| Poetry |

| Poetry 2 |

| 涓€鍒嗛挶 |

| 璇楁瓕 |

| 瓒呭競鑻辫 |

| 椋炴満鑻辫 |

发现然并卵。

网上找了一下答案,发现需要转换编码后才能对其使用lower或upper

转换编码 convert(field using utf8)

mysql> select lower(convert(name using utf8)) from cs_course;

+---------------------------------+

| lower(convert(name using utf8)) |

+---------------------------------+

| poetry |

| poetry 2 |

| 一分钱 |

| 诗歌 |

| 超市英语 |

| 飞机英语 |

| ddddd |

| 口语a |

| 口语a |

于是乎,最后得到查询

mysql> select name from cs_course where lower(convert(name using utf8)) like '%p%';

+--------------+

| name |

+--------------+

| Poetry |

| Poetry 2 |

| think in php |

+--------------+

3 rows in set (0.00 sec) 问题解决。

mysql varbinary 转换_mysql binary和varbinary存储字段转换大小写相关推荐

  1. mysql 镜像数据_mysql官方镜像数据存储问题

    mysql官方镜像的Dockerfile中,有这么一条设置,即用了VOLUME这个关键字,同时后面设置了一个路径,/var/lib/mysql,这个路径是用来存储数据库的各种表的数据的. 这一条设置会 ...

  2. mysql 图标图标_MySQL 支持 emoji 图标存储

    在MySLQ中 UPDATA 和 INSERT 数据的时候,如果数据上面带有emoji图标,例如:?.?.? 很容易更新或者插入不成功,导致报错. 都快崩溃了,但是还好终于解决了这种鬼问题.资料显示原 ...

  3. mysql clob转string_Java获取Oracle中CLOB字段转换成String

    Java获取Oracle中CLOB字段转换成String : try {PreparedStatement stmt = session.connection().prepareStatement(s ...

  4. oracle number长度转换,Oracle Number型数值存储与转换的实现详解

    Oracle在数据库内部通过相应的算法转换来进行数据存储,本文简单介绍Oracle的Number型数值存储及转换.这个内容是为了回答留言板上的2119号问题. 我们可以通过DUMP函数来转换数字的存储 ...

  5. mysql php 迁移_MySQL数据复制、迁移、转换

    本文总结各种场景下的mysql数据复制.迁移.转换.1.导入.导出利用mysqldump命令将数据文件导出成一个文本文件,这在不同场景下 本文总结各种场景下的mysql数据复制.迁移.转换. 1.导入 ...

  6. mysql声明存储过程_MySQL 声明变量及存储过程分析

    声明变量 设置全局变量 set @a='一个新变量'; 在函数和储存过程中使用的变量declear declear a int unsigned default 1; 这种变量需要设置变量类型 而且只 ...

  7. mysql merge事务_mysql菜鸟手迹11--mysql存储引擎之Merge

    merge engine存储引擎: 一个Merge表是一组MySIAM表的集合,每个Merage表在磁盘上是一个.frm 的结构文件和一个.mrg的文件,这个文件是一个文本文件里面存放的是组成这个me ...

  8. mysql 存坐标_MySql使用Float数据类型存储地理坐标

    您的实施有两个问题. 将值四舍五入为2位精度的原因是您明确将比例定义为2. 此外,FLOAT是MySQL中不精确的数据类型. 要解决这两个问题,您应该使用具有适当精度和比例的DECIMAL数据类型. ...

  9. mysql 营业时间_mysql – 在数据库中存储各种商店开放时间的方法

    我想在数据库中存储不同商店的营业时间.目前我正在使用最简单的解决方案: CREATE TABLE opening_times( shop_id int(3) NOT NULL, times varch ...

  10. mysql拼接数组_Mysql合并结果接横向拼接字段的实现步骤

    前言 近日在做一个报表功能里面有一个这样的需求是统计各部门在某一月入职和离职的人数 我的步骤 先查出入职的人数 SELECT dept ,COUNT(1) rcNumber FROM 员工表 WHER ...

最新文章

  1. MySQL Workbench 8.0 CE数据库管理基本操作
  2. 2019年计算机一级考试pdf,2019年计算机一级考试试题与答案.pdf
  3. 安装mysql5.7
  4. 构建嵌入式linux系统_用于构建嵌入式Linux系统的4种工具
  5. Exchange系列—群集连续复制配置
  6. python的os为啥找不到文件_python使用os.listdir和os.walk获得文件的路径
  7. 软件测试国际化测试指标,国际化软件测试内容解析(2)
  8. ReactiveSwift源码解析(二) Bag容器的代码实现
  9. POJ 1125 Stockbroker Grapevine
  10. Xmind模板文档分享——学习记录(4)
  11. c语言scanf不用取地址符,关于c中printf和scanf函数是否使用取地址符的疑问
  12. access中如何画斜线_在Excel单元格中如何用斜线分割填写?
  13. 阿里网盘官网网页,怎么隐藏的这么深
  14. 遗传算法 - 简单介绍
  15. 使用 GitHub Actions 来构建应用程序
  16. MATHLAB GUI编程简易入门
  17. SQL注入漏洞(postgresql注入)
  18. php实时股票,php股票数据分析源码
  19. hiho 挑战赛16 A.王胖浩与三角形
  20. Java开发就业形势和面试技巧

热门文章

  1. 安卓系统的电视机_天猫魔盒强刷机教程,把天猫魔盒刷成安卓系统教程?
  2. 微PE系统盘制作 / 重装系统
  3. c语言写俄罗斯方块(源码)
  4. matlab生成pdf报告,MATLAB发布代码---生成文档pdf
  5. 通讯录管理系统mysql,EML企业通讯录管理系统 v5.4.15
  6. ALtium 16等长布线、差分布线
  7. 第一章 复数与复变函数
  8. java oracle 乱码_oracle中的数据库乱码的原因与解决
  9. DDOS---低轨道离子炮具体使用
  10. 手机APP数据包抓包分析