文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何解决Mysql数据库中sql语句的where条件中文本匹配问题

2024-04-02 19:55

关注

这篇文章主要介绍如何解决Mysql数据库中sql语句的where条件中文本匹配问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Mysql数据库中sql语句中where条件中文本匹配问

问题描述

字段name类型为varchar时(CHAR,VARCHAR和TEXT情况都一样),

语句一

select * from aaa where name='a';

语句二

select * from aaa where name='a ' ;

结果一样:不能区分末尾是否有空格,

建议:

1、如果必须精确匹配(包括大小写和末尾空格)建议转换成二进制比较,使用select * from aaa where name=BINARY'a ' ;

2、如果需要精确校验末尾是否有空格,但是保留大小写模糊匹配(默认校对规则_ci大小写不敏感),建议增加length(name)就可以比较出长度来区分

3、如果需要精确校验大小写,但是保留末尾空格忽略,可以使用select * from aaa where name='a' collate utf8_cs; (字符为utf8)

4、默认设置情况下,

a、where name='a';

b、where name='a ';(末尾有空格)

c、where name='A';

b、where name='A ';(末尾有空格)

四中情况匹配的结果是一样的,

经查询官方文档:

所有MySQL归类都是PAD SPACE类型。 这意味着所有CHAR,VARCHAR和TEXT值都会进行比较,而不考虑任何尾随空格。 在此上下文中的“比较”不包括LIKE模式匹配运算符,其尾部空格是重要的。 例如:

mysql> CREATE TABLE names (myname CHAR(10));

Query OK, 0 rows affected (0.03 sec)

mysql> INSERT INTO names VALUES ('Monty');

Query OK, 1 row affected (0.00 sec)

mysql> SELECT myname = 'Monty', myname = 'Monty ' FROM names; +------------------+--------------------+

| myname = 'Monty' | myname = 'Monty ' |

+------------------+--------------------+

 | 1 | 1 |

+------------------+--------------------+

 1 row in set (0.00 sec)

mysql> SELECT myname LIKE 'Monty', myname LIKE 'Monty ' FROM names; +---------------------+-----------------------+ |

 myname LIKE 'Monty' | myname LIKE 'Monty ' |

 +---------------------+-----------------------+

| 1 | 0 |

+---------------------+-----------------------+

 1 row in set (0.00 sec)

对于所有MySQL版本都是如此,并且不受服务器SQL模式的影响。

注意

有关MySQL字符集和归类的更多信息,请参阅第10章,字符集,归类,Unicode。 有关存储要求的更多信息,请参见第11.7节“数据类型存储要求”。

对于尾随填充字符被去除或比较忽略它们的情况,如果列的索引需要唯一值,则插入到仅与尾部填充字符数不同的列值中将导致重复键错误。 例如,如果一个表包含'a',则尝试存储'a'会导致重复键错误。

以上是“如何解决Mysql数据库中sql语句的where条件中文本匹配问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯