MYSQL字符串大小写 缺省行为
来源:互联网 发布:纸箱淘宝 编辑:程序博客网 时间:2024/05/23 00:00
今天遇到一个主键冲突的文件, 我看两条记录的主键明明不一样, 一条是大写的JAA, 另外一条是小写的jaa, 莫灰是mysql对字段的值不区分大小写, 在网上查了一下, 还真是(默认情况下), 找了一篇文章:
摘自: http://www.oklinux.cn/html/sql/other/20080426/52340.html
1、Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;
2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
lower_case_table_names参数详解:
lower_case_table_names = 0
其中 0:区分大小写,1:不区分大小写
lower_case_table_names = 0
其中 0:区分大小写,1:不区分大小写
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。
3、如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:
A、创建时设置:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
A、创建时设置:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
B、使用alter修改:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
C、mysql table editor中直接勾选BINARY项。
摘自:http://zhangzuanqian.javaeye.com/blog/210456
MySQL查询字符串时大小写不敏感
最近反映如果注册了阿龙。阿磊就不能注册的问题!这个是mysql问题!很多用mysql的论坛都有这个问题。而且不仅仅是这两个词的问题。
最近反映如果注册了阿龙。阿磊就不能注册的问题!这个是mysql问题!很多用mysql的论坛都有这个问题。而且不仅仅是这两个词的问题。
出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,这个字符集对大小写不敏感,因此在比较过程中中文编码字符大小写转换造成了这种现象。
方法一:
解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。
解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。
方法二:
如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。
如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。
方法三:
可以使用 Mysql 的 locate 函数来判断。以上述问题为例,使用方法为: SELECT * FROM table WHERE locate(field,'李') > 0;
可以使用 Mysql 的 locate 函数来判断。以上述问题为例,使用方法为: SELECT * FROM table WHERE locate(field,'李') > 0;
方法四:
把您的Select语句改成这样,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%'即可!
把您的Select语句改成这样,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%'即可!
方法五:
如果你在Windows下使用已经编译好的MySQL,可以修改My.ini中的字符集选项。
default-character-set = gb2312
如果你在Windows下使用已经编译好的MySQL,可以修改My.ini中的字符集选项。
default-character-set = gb2312
在默认情况下,mysql搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE 'a%'进行搜索,你将获得以A或a开始的所有列。 如果打算使搜索区分大小写,请确保操作数之一具有区分大小写的或二进制校对。例如,如果你正在比较均适用latin1字符集的列和字符串,可使用COLLATE操作符,使1个操作数具有latin1_general_cs或latin1_bin校对特性。例如:
col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin
如果希望总是以区分大小写的方式处理列,可使用区分大小写的或二进制校对声明它。建表时候使用BINARY标示。
CREATE TABLE T(
A VARCHAR(10) BINARY
);
CREATE TABLE T(
A VARCHAR(10) BINARY
);
如果是自己的服务器使用win系统,方法五是最好的方法!如果是linux系统,可以使用方法二!如果不是自己的机子,可以使用方法一,这样你的用户名是严格区分大小写的!
- MYSQL字符串大小写 缺省行为
- MySQL字符串大小写转换函数
- MySQL字符串大小写转换函数
- mysql字符串查询大小写问题
- MySQL字符串大小写转换函数
- MySQL字符串大小写转换函数
- MySQL字符串函数 字符串大小写转换
- MySQL查询字符串时大小写不敏感
- MySQL查询字符串时区分大小写
- mysql 查询字符串大小写不敏感
- mysql字符串查询大小写问题2
- mysql查询字符串数据区分大小写问题
- mysql连接字符串,大小写不敏感查询
- mysql字符串区分大小写的问题
- Mysql 字符串like比较 大小写忽略
- mysql 缺省日期列
- 改变 Grails 的缺省事务行为
- 改变 Grails 的缺省事务行为
- 2011职业发展技术规划
- Support - Unable to register keys or sign a file while behind a proxy server
- BSTR、char*和CString转换
- 50个人围成一圈数数,数到3的倍数时出圈,最后剩下的人是谁?
- 使用通配符定义Action
- MYSQL字符串大小写 缺省行为
- 【Swing入门教程】如何隐藏JSplitPane中的分割线
- 看看这些美军越战“橙剂”受害人的悲惨生活
- 常用的css属性
- Software Package: Lextools
- linux c语言定时器
- .net ashx 验证码
- Linux C编程前奏2
- ACE_Task