设为首页 收藏本站
查看: 940|回复: 0

[经验分享] MYSQL和oracle 大小写问题

[复制链接]

尚未签到

发表于 2017-12-10 20:32:58 | 显示全部楼层 |阅读模式
  MySQL的大小写问题 不是一个很大的问题,但是如果不了解的话,却会使用户产生迷惑 ;如下面
  Sql代码
  insert into t values('A');  
  insert into t values('a');  
  当第二条执行的时候,如果是主键或者有唯一性约束的话,会发生
  Sql代码
  Duplicate entry for XXX  
  更加迷惑的是下面的2条语句
  Java代码
  insert into t values('~');  
  insert into t values('y');  
  也会发生插入错误。
  在查询的时候也会出现这样的问题
  Java代码
  /* 查询的结果一眼 */  
  select * from t where a like 'a%'  
  select * from t where a like 'A%'  
  /* 下面的查询结果也是一样 */  
  select * from t where a = 'y';  
  select * from t where a = ''~;  
  1.问题产生的原因
  MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
  1、数据库名与表名是严格区分大小写的;
  2、表的别名是严格区分大小写的;
  3、列名与列的别名在所有的情况下均是忽略大小写的;
  4、变量名也是严格区分大小写的;
  MySQL在Windows下都不区分大小写。
  MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,这个字符集对大小写不敏感,因此在比较过程中中文编码字符大小写转换造成了这种现象。
  2.解决办法
  A.表名区分大小写
  在my.conf加入:
  ower_case_table_names = 0
  其中 0:区分大小写,1:不区分大小写
  B.插入查询时区分大小写
  字段值需要设置BINARY属性,即可区分大小写。
  设置的方法有多种:
  创建时设置:
  CREATE TABLE T(
  A VARCHAR(10) BINARY
  );
  使用alter修改:
  ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
  mysql table editor中直接勾选BINARY项。
  oracle中分为两种情况,单纯的sql语句不区分大小写,但是如果查询某个字符的话就需要区分大小写。
  1、如以下情况,是不区分大小写的,查询结果都是一致的:
select * from emp;SELECT * FROM EMP;  2、如在emp表中查询ename为“SMITH”(不含引号)的信息,就必须注意大小写:
select * from emp where ename='SMITH';  这样是有结果的,如图:

select * from emp where ename='smith';  这样则查询不出结果:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-422754-1-1.html 上篇帖子: linux系统oracle-ora12505问题解决方案一 下篇帖子: Oracle 表复杂查询之多表合并查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表