zoukankan      html  css  js  c++  java
  • mysql字段值如何区分大小写

    今天做sql查询,发现字段值没区分大小写

    mysql> select guid,type,parent_guid from api_assets where guid='3rfI2PsSrCz91mTMDgrZjE';
    +------------------------+--------+------------------------+
    | guid | type | parent_guid |
    +------------------------+--------+------------------------+
    | 3rfI2PsSrCz91mTMDgrZjE | Window | 3rfI2PsSrCz91mTMDgry9E |
    | 3rfI2PsSrCz91mTMDgrzje | Member | 3rfI2PsSrCz91mTMDgrzj1 |
    | 3rfI2PsSrCz91mTMDgrzjE | Plate | 3rfI2PsSrCz91mTMDgrzjU |
    +------------------------+--------+------------------------+

    系统:

      win7

    数据库版本

    mysql> select version();
    +------------+
    | version() |
    +------------+
    | 5.7.26-log |
    +------------+

    解决方法

      1.查询时指定大小写敏感

        在查询时指定大小写“敏感”,加关键字“BINARY”

    mysql> select guid,type,parent_guid from api_assets where BINARY guid='3rfI2PsSrCz91mTMDgrZjE';
    +------------------------+--------+------------------------+
    | guid | type | parent_guid |
    +------------------------+--------+------------------------+
    | 3rfI2PsSrCz91mTMDgrZjE | Window | 3rfI2PsSrCz91mTMDgry9E |
    +------------------------+--------+------------------------+

    mysql> select guid,type,parent_guid from api_assets where guid= BINARY '3rfI2PsSrCz91mTMDgrZjE';
    +------------------------+--------+------------------------+
    | guid | type | parent_guid |
    +------------------------+--------+------------------------+
    | 3rfI2PsSrCz91mTMDgrZjE | Window | 3rfI2PsSrCz91mTMDgry9E |
    +------------------------+--------+------------------------+

      2.定义表结构时指定字段大小写敏感

      关键字“BINARY”指定guid字段大小写敏感

    CREATE TABLE `api_assets` (
      `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `guid` varchar(255) BINARY NOT NULL,
      ……
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    MySQL允许在大多数字符串类型上使用BINARY关键字,用于指明所有针对该字段的运算是大小写敏感的 

      3.修改排序规则(COLLATION)

    mysql> show variables like 'collation\_database';
    +--------------------+-----------------+
    | Variable_name | Value |
    +--------------------+-----------------+
    | collation_database | utf8_general_ci |
    +--------------------+-----------------+

      Collation以 "_ci"结尾的不区分大小写(ci——Case Ignore),以"_bin"或者"_cs"结尾的区分大小写

      将Collation改为 utf8_bin(大小写敏感的)

      可以为库、表、列指定Collation。

      优先级为 列>表>库

      eg:

    mysql> CREATE DATABASE test COLLATE utf8_bin;
    Query OK, 1 row affected

    mysql> use test;
    Database changed
    mysql> show variables like 'collation\_database';
    +--------------------+----------+
    | Variable_name | Value |
    +--------------------+----------+
    | collation_database | utf8_bin |
    +--------------------+----------+

    mysql> select guid,type,parent_guid from api_assets where
    guid='3rfI2PsSrCz91mTMDgrZjE';
    +------------------------+--------+------------------------+
    | guid | type | parent_guid |
    +------------------------+--------+------------------------+
    | 3rfI2PsSrCz91mTMDgrZjE | Window | 3rfI2PsSrCz91mTMDgry9E |
    | 3rfI2PsSrCz91mTMDgrzje | Member | 3rfI2PsSrCz91mTMDgrzj1 |
    | 3rfI2PsSrCz91mTMDgrzjE | Plate | 3rfI2PsSrCz91mTMDgrzjU |
    +------------------------+--------+------------------------+
    3 rows in set

    mysql> ALTER TABLE `api_assets` DEFAULT CHARACTER SET=utf8 COLLATE=utf8_bin;
    Query OK, 0 rows affected
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> select guid,type,parent_guid from api_assets where guid='3rfI2PsSrCz91mTMDgrZjE';
    +------------------------+--------+------------------------+
    | guid | type | parent_guid |
    +------------------------+--------+------------------------+
    | 3rfI2PsSrCz91mTMDgrZjE | Window | 3rfI2PsSrCz91mTMDgry9E |
    | 3rfI2PsSrCz91mTMDgrzje | Member | 3rfI2PsSrCz91mTMDgrzj1 |
    | 3rfI2PsSrCz91mTMDgrzjE | Plate | 3rfI2PsSrCz91mTMDgrzjU |
    +------------------------+--------+------------------------+
    3 rows in set

    mysql> ALTER TABLE `api_assets` MODIFY COLUMN `guid` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL AFTER `id`;
    Query OK, 3344 rows affected
    Records: 3344 Duplicates: 0 Warnings: 0

    mysql> select guid,type,parent_guid from api_assets where guid='3rfI2PsSrCz91mTMDgrZjE';
    +------------------------+--------+------------------------+
    | guid | type | parent_guid |
    +------------------------+--------+------------------------+
    | 3rfI2PsSrCz91mTMDgrZjE | Window | 3rfI2PsSrCz91mTMDgry9E |
    +------------------------+--------+------------------------+
    1 row in set

  • 相关阅读:
    JMeter学习-016-思路篇之-山重水复柳暗花明
    JMeter学习-015-JMeter 断言之-Bean Shell Assertion
    JMeter学习-014-JMeter 配置元件实例之
    Fiddler-008-简单模拟性能测试
    Fiddler-007-修改HTTP请求响应数据
    Fiddler-006-修改HTTP请求参数
    JMeter学习-013-JMeter 逻辑控制器之-如果(If)控制器
    JMeter学习-012-JMeter 配置元件之-HTTP Cookie管理器-实现 Cookie 登录
    JMeter学习-011-JMeter 后置处理器实例之
    JMeter学习-010-JMeter 配置元件实例之
  • 原文地址:https://www.cnblogs.com/baby123/p/11384492.html
Copyright © 2011-2022 走看看