mysql - 如何制作默认文本列,其中比较二进制(区分大小写和修剪)

标签 mysql sql

抱歉,如果此问题重复,但我不知道如何查找该问题。

嗨,这是我的 table :

CREATE TABLE `log_Valor` (
    `idLog_Valor` int(11) NOT NULL AUTO_INCREMENT,   
    `Valor` text binary  NOT NULL,  
    PRIMARY KEY (`idLog_Valor`) 
)
ENGINE=InnoDB;

INSERT INTO `log_Valor` (Valor) VALUES ('teste');
INSERT INTO `log_Valor` (Valor) VALUES ('teste ');

我有 2 行:

1  | 'teste'
2  | 'teste '

当我运行时:

SELECT * FROM log_Valor where valor = 'teste'

它返回两行。

如何使默认比较区分大小写并且在不必在查询 BINARY 中指定的情况下不修剪?

最佳答案

使用LIKE而不是=

SELECT * FROM log_Valor WHERE valor LIKE 'teste';

来自documentation

In particular, trailing spaces are significant, which is not true for CHAR or VARCHAR comparisons performed with the = operator

DEMO

关于mysql - 如何制作默认文本列,其中比较二进制(区分大小写和修剪),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37077083/

相关文章:

PHP自动回复消息在添加回复到MySQL数据库之前需要暂停

MySQL 根据结果选择

sql - 时区相等的 Postgres 时间

php - PHP 中的 MySQL;比较前编辑列值

mysql - 如何在 Doctrine 中转义单引号

mysql - 防止插入重复表行的策略

mysql - SQL行列总和,数字之间有空格

php - 无法将图像和文本发布到数据库。接收无错误

php - 如何从自定义插件访问 wordpress 表

mysql - mysql 中的条件连接