首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在比较时需要考虑varchar中的尾随空格

问在比较时需要考虑varchar中的尾随空格
EN

Stack Overflow用户
提问于 2010-09-08 22:52:40
回答 5查看 5.1K关注 0票数 17

我正在使用一个包含varchar列的表。我没有意识到在比较时不考虑尾随空格(显然,如果指定了两个仅在尾随空格的数量上不同的值,将违反唯一性属性)。

我需要在表中修复它,最好是在适当的位置。在MySQL中,有没有修复这样的表的推荐路径?

我严格地通过我控制的程序访问数据库,因此切换到非人类可读的格式(如二进制)将是很好的。但我不确定如何做这样的事情,也不想破坏表。

EN

回答 5

Stack Overflow用户

发布于 2012-04-13 23:35:36

我必须假设您使用的是VARCHAR5.x,因为MySQL 4.x不在VARCHAR列中存储尾随空格。

正如您所指出的,在MySQL中使用标准=运算符时,不考虑尾随空格:

SELECT 'this' = 'this '返回TRUE

但是,LIKE会逐个字符比较字符串,因此尾随空格很重要。

SELECT 'this' LIKE 'this '返回FALSE。

使用默认排序规则,=和LIKE都可以不区分大小写。如果需要以区分大小写的方式比较排序规则,请使用COLLATE子句指定排序规则。

票数 11
EN

Stack Overflow用户

发布于 2010-09-17 03:52:33

您可以在包含空格的表字段上运行空查询吗?

代码语言:javascript
复制
RTRIM(str) 

返回删除了尾随空格字符的字符串字符串。mysql> SELECT RTRIM( 'barbar‘);->’barbar‘此函数是多字节安全的。

票数 2
EN

Stack Overflow用户

发布于 2019-09-05 23:54:55

数据库排序在其中扮演着重要的角色。我也遇到过类似的情况,发现字符集= utf8mb4和排序规则= utf8mb4_0900_as_cs可以解决这个问题。

你可以阅读更多here.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3668996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档