位置: 编程技术 - 正文

MySQL中查询的有关英文字母大小写问题的分析(mysql 查询范围)

编辑:rootadmin

推荐整理分享MySQL中查询的有关英文字母大小写问题的分析(mysql 查询范围),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql查询sid,mysql中的查询语句,mysql查询方式有哪几种,mysql 查询范围,mysql查询或,mysql查询或,mysql查询或,mysql查询或,内容如对您有帮助,希望把文章链接给更多的朋友!

mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的。

1. 什么是字符集和校验规则?

字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则。要想列出一个字符集的校对规则,使用SHOW COLLATION语句。

校对规则一般有这些特征:

两个不同的字符集不能有相同的校对规则。 每个字符集有一个默认校对规则。例如,utf8默认校对规则是utf8_general_ci。 存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。

2. 不同级别的字符集和校验规则可控制大小写敏感

MySQL5.1在同一台服务器、同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合定义字符串。字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。

2.1服务器级

MySQL按照如下方法确定服务器字符集和服务器校对规则:

(1)修改配置文件/etc/my.cnf

在[mysqld]下添加:collation_server = utf8_bin

重启实例

更改服务器级的校验规则(collation_server )后,数据库校验规则(collation_collation)默认会继承服务器级的。

注意:

这个只适用于在重新启动之后, 新建的库,已存在的库不受影响.

同样的, 即使库的校验规则改了,已经存在的表不受修改影响;

同理与已经存在的列...

可以看出,在服务器级进行相应的校对规则设置,查询大小写敏感。

(2)当服务器启动时根据有效的选项设置

当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和校对规则。

shell> mysqld --character-set-server=latin1 --collation-server=latin1_swedish_ci

2.2数据库级

MySQL这样选择数据库字符集和数据库校对规则:

如果指定了character set X和collate Y,那么采用字符集X和校对规则Y。 如果指定了character set X而没有指定collate Y,那么采用character set X和character set X的默认校对规则。 否则,采用服务器字符集和服务器校对规则。

MySQL中查询的有关英文字母大小写问题的分析(mysql 查询范围)

(1)修改配置文件/etc/my.cnf

进行了两组测试:

1) 在[mysqld]下添加:

2) 在[mysqld]下添加:

重启实例,两组都不能正常启动,错误信息如下:

可见,my.cnf配置文件中不支持设置collation_database 变量。

(2)创建数据库时设置数据库校验规则

可以看出,在数据库级进行相应的校对规则设置,查询大小写敏感。

2.3表级

MySQL按照下面的方式选择表字符集和校对规则:

如果指定了character set X和collate Y,那么采用character set X和collate Y。 如果指定了character set X而没有指定collate Y,那么采用character set X和character set X的默认校对规则。 否则,采用数据库字符集和服务器校对规则。

在创建表时设置表级校验规则:

可以看出,在表级进行相应的校对规则设置,查询大小写敏感。

2.4 连接级

考虑什么是一个“连接”:它是连接服务器时所作的事情。客户端发送SQL语句,例如查询,通过连接发送到服务器。服务器通过连接发送响应给客户端,例如结果集。对于客户端连接,这样会导致一些关于连接的字符集和校对规则的问题,这些问题均能够通过系统变量来解决:

当查询离开客户端后,在查询中使用哪种字符集?

服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。

服务器接收到查询后应该转换为哪种字符集?

转换时,服务器使用character_set_connection和collation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection。

服务器发送结果集或返回错误信息到客户端之前应该转换为哪种字符集?

character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。

3. 创建数据库表时大小写不敏感,仍然有方法在查询时区分大小写

3.1 在SQL语句中使用collate

使用collate子句,能够为一个比较覆盖任何默认校对规则。collate可以用于多种SQL语句中,比如where,having,group by,order by,as,聚合函数。

3.2 binary操作符

binary操作符是collate子句的一个速记符。binary 'x'等价与'x' collate y,这里y是字符集'x'二元校对规则的名字。每一个字符集有一个二元校对规则。例如,latin1字符集的二元校对规则是latin1_bin,因此,如果列a是字符集latin1,以下两个语句有相同效果:

分析一个MySQL的异常查询的案例 问题用户工单疑问:相同的语句,只是最后的limit行数不同。奇怪的是,limit的性能比limit的语句还慢约倍。隐藏用户表信息,语句及结果如下SELECTf

MySQL存储数据乱码的问题解析 mysql的字符集设置有多个层级,在mysql中存储中文,如果不能正确设置字符集,很容易出现数据乱码。今天就有一个用户反馈他数据库中的数据下午1点多

MySQL的增删查改语句用法示例总结 1.创建列altertabletablenameaddcolnametypenotnulldefault'0′;例:altertablemmanapp_mmanmediaaddappid_idintegernotnulldefault;2.删除列altertabletablenamedropcolumncolname;例:altertablemma

标签: mysql 查询范围

本文链接地址:https://www.jiuchutong.com/biancheng/347312.html 转载请保留说明!

上一篇:几个常见的MySQL的可优化点归纳总结(几个常见的收敛级数)

下一篇:分析一个MySQL的异常查询的案例(mysql在数据分析中的作用)

  • 小微企业印花税怎么算
  • 销售额是含税价还是不含税价
  • 简易计税方法和免税该怎么选择
  • 以前年度损益结转到未分配利润
  • 个人抬头的发票可以报销吗
  • 在建工程的范围
  • 总承包单位可以分包吗
  • 冲红发票怎么写备注
  • 金融服务担保费会计处理
  • 免费给客户提供服务怎么做账
  • 公司注册住所要求
  • 调整增值税误差的原因
  • 房地产行业增值税筹划
  • 房产公司办公室布局
  • 全额收取员工的社保的会计分录怎么写?
  • 开的是全额发票但是有分包如何做账务处理?
  • 划拨土地能转为商业用地吗
  • 公司用窗帘用什么颜色
  • 免抵税额增值税主表体现到哪里的
  • 空调折旧年限的最新规定2018
  • 成本费用分配的原则方法
  • 特殊金融机构有哪些
  • 公司接受安全罚款的账务处理
  • 设计部工资计入哪个科目
  • 话费打印发票怎么缩小
  • 代扣代缴增值税可以抵扣进项税?
  • 如何使用U盘启动盘进行分区
  • 进入英雄联盟显示超频怎么办
  • 辅助生产车间照明用电计入哪个科目
  • 扣缴公积金的会计分录
  • 行政单位如何将资产年报导入财报里
  • 操作系统的内存映射
  • vs code no such file or directory
  • 恶搞代码vbs教程
  • oss对象储存的副本储存原则
  • PHP:mcrypt_get_iv_size()的用法_Mcrypt函数
  • ci框架文档
  • Android App中DrawerLayout抽屉效果的菜单编写实例
  • 电子发票有哪些版本
  • 盈余公积转增资本的最高限额
  • split 文件分割
  • php curl_setopt
  • python 数据采集卡
  • 非金融企业之间借款利息可以抵扣吗
  • 增值税比对票表不通过
  • 进口关税如何交
  • 增值税发票认证勾选平台
  • sql存储过程详解图
  • 外经证办好了后怎么开票
  • 企业没收入也要交税吗
  • 资产负债表中的货币资金包括哪些
  • 累计折旧贷方余额怎么算
  • 法人买社保又不发工资怎么做账
  • 印花税征税对象是什么
  • 电子退库收入怎么入账
  • 固定资产改造多少直接进费用
  • 编制现金流量表应以什么为基础
  • 投资款如何界定
  • 应收票据背书支付是什么
  • 研发费用的会计处理对公司经营成果的影响
  • 报销差旅费用什么收款凭证还是转账凭证
  • 什么情况下需要打狂犬疫苗
  • 员工借款计入
  • 电脑算固定资产哪一类
  • 债权投资和其他应收款的区别
  • 在sql server中使用对象资源管理器和SQL
  • mysql嵌套查询联表查询
  • win7鼠标右键一闪就没了
  • win8.1安装秘钥
  • win10显示win8
  • xp系统c盘到底哪些文件可以删除越详细越好谢谢
  • mcshield.exe是什么进程
  • win7文件访问被拒绝怎么办
  • 在linux中使用什么命令可以执行shell脚本
  • win7待机时间在哪调
  • windows8.1crazy error
  • opengl的坐标系
  • activity lunchmode详解
  • 电子税务局浏览器版本太低
  • 湖北税务网上登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设