关于数据库大小写的问题

数据库大小写区分
前提:
在数据库中进行查询时,默认情况下是不区分大小写的。但是现在在备品备件库存的计算中,备件规格字段是需要区分大小写的,所以下面讲解在mysql、sql server以及oracle中如何区分大小写。
一、 mysql
在mysql默认的情况下,下面两条查询的结果是一样的

SELECT specifications FROM `t02_spareparts` where specifications='dn100';
SELECT specifications FROM `t02_spareparts` where specifications='DN100';

在specifications字段的编码为utf8的前提下,有以下几种方法:
1、 mysql默认的字符检索策略:utf8_general_ci,表示不区分大小写;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。创建表时,直接设置表的collate属性为utf8_general_cs或者utf8_bin;如果已经创建表,则直接修改字段的Collation属性为utf8_general_cs或者utf8_bin。

ALTER TABLE t02_spareparts CHANGE specifications specifications VARCHAR(50) CHARACTER SET utf8 COLLATE  utf8_bin;

2、

SELECT specifications FROM `t02_spareparts` where BINARY specifications='DN100';
在where条件加上BINARY。

二、 sql server
在sql server默认的情况下,下面两条查询的结果是一样的

SELECT 备件名称,[规格型号] FROM [dbo].[备件入库单_明细]
where 备件名称='碳钢弯头'
and 规格型号 = 'φ89';
SELECT 备件名称,[规格型号] FROM [dbo].[备件入库单_明细]
where 备件名称='碳钢弯头'
and 规格型号 = 'Φ89';

解决方法:
1、 字段Collation属性从“”改为“Chinese_PRC_CS_AS”。
2、

SELECT 备件名称,[规格型号] FROM [dbo].[备件入库单_明细]
where 备件名称='碳钢弯头'
and 规格型号 = 'φ89' COLLATE Chinese_PRC_CS_AS;
在字段值后面加上COLLATE Chinese_PRC_CS_AS

三、 Oracle

oracle默认区分大小写。如果不要区分,就要额外的设置。
在这里插入图片描述
在这里插入图片描述
解决方法:

ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=binary_ci;

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值