如何设置mysql 数据库列内容区分大小写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置mysql 数据库列内容区分大小写相关的知识,希望对你有一定的参考价值。

表中code列是主键,假如表中一条记录的code值为“a”,还想插入一条记录“A”。现在报主键重复。如何解决?
已经解决了:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY

mysql默认的设置或是对整个库的设置
是否区分大小写和校对规则有关,默认设的规则是大小写不敏感的。
show create table如果看到collate是ci结尾,那么就是不区别的,如果cs或bin结尾,就是区别的。
如果建表的时候选择的是区别大小写的规则而查询的时候又暂时不想区别,
可以用类似
WHERE column_name COLLATE latin1_general_ci = 'xxx'
的写法改变查询使用的校对规则追问

表中code列是主键,假如表中一条记录的code值为“a”,还想插入一条记录“A”。现在报主键重复。如何解决?
帮忙说的详细一些。不是查询。

追答

你电脑什么系统的啊 windows不区分大小写 linux区分大小写

参考技术A MySQL在Linux下数据库名、表名、列名、别名大小写规则:
   1、数据库名与表名是严格区分大小写
   2、表的别名是严格区分大小写
   3、列名与列的别名在所有的情况下均是忽略大小写的
   4、变量名也是严格区分大小写的
注意:
A、Linux下MySQL安装完后默认:区分表名的大小写,不区分列名的大小写
B、改变表名的大小写区分规则的方法:用root帐号登录,在/etc/my.cnf 或 /etc/mysql/my.cnf 中的[mysqld]下面添加添加lower_case_table_names=1
# The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
# add here
lower_case_table_names=1

mysql建表时强制区分大小写怎么写?

参考技术A 平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写。但作为用户信息,一旦用户名重复,又会浪费很多资源。再者,李逵、李鬼的多起来,侦辨起来很困难。要做到这一点,要么在建表时,明确大小写敏感(字段明确大小写敏感)。如果通盘数据库所有字段都需要大小写敏感,不如在字符集设置时做好调整。不过,通常不建议这么做。
如果跟我一样,数据库已经在线上跑了,一个表上百万条数据,做字段类型变更有可能导致数据库宕机。那么好吧,在查询时,多加个单词好了!-
例如,一般查询:
SELECT * FROM U WHERE name LIKE 'a%';
SELECT * FROM U WHERE name LIKE 'A%';
其结果是一样的,为了区分'A%'和'a%',可以这么做:
SELECT * FROM U WHERE binary name LIKE 'a%';
SELECT * FROM U WHERE binary name LIKE 'A%';
仅仅多了一个binary,就可以得到不同的结果!
当然,如果需要建表时强制区分大小写,可以这么写:
create table table_name(
就这么简单!本回答被提问者采纳

以上是关于如何设置mysql 数据库列内容区分大小写的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中使用 JPA 自动生成区分大小写的列

如何设置MySQL中表的大小写区分

请问mysql数据类型是不是区分大小写?

如何查看mysql表名字段是不是区分大小写

podman mysql字段区分大小写吗

mysql表名怎么配置不区分大小写?