【问题标题】:MySQL. Select string that ends with a special charactermysql。选择以特殊字符结尾的字符串
【发布时间】:2020-08-13 16:47:57
【问题描述】:

所以如果我在 MySQL 5.5 中执行此查询:

SELECT mycol FROM mytable WHERE mycol LIKE '%Â'

我得到了 mycol 以 A 的任何变体结尾的所有记录,所以我得到了

LA
la
LÂ

我怎样才能修改这个查询,所以我只得到以特定特殊字符结尾的结果 Â

show create table mytable

CREATE TABLE `direcciones` (
 `idusuario` varchar(50) NOT NULL,
 `iddireccion` int(10) NOT NULL AUTO_INCREMENT,
 `calle` varchar(150) NOT NULL, **-- THIS IS MY FIELD**
 `numero` int(4) NOT NULL,
 `piso` varchar(10) NOT NULL,
 `puerta` varchar(10) NOT NULL,
 `localidad` varchar(100) NOT NULL,
 `provincia` varchar(100) NOT NULL,
 `cp` int(5) NOT NULL,
 PRIMARY KEY (`iddireccion`)
) ENGINE=InnoDB AUTO_INCREMENT=4192 DEFAULT CHARSET=latin1


show variables like '%character_set%'



character_set_client    utf8    
character_set_connection    utf8    
character_set_database  utf8    
character_set_filesystem    binary  
character_set_results   utf8    
character_set_server    latin1  
character_set_system    utf8    
character_sets_dir  /usr/share/mysql/charsets/  

【问题讨论】:

标签: mysql sql phpmyadmin


【解决方案1】:

要防止 mysql 使用列的排序规则设置(允许这些匹配项),请指定您的字符串是二进制的:

SELECT mycol FROM mytable WHERE mycol LIKE BINARY '%Â';

SELECT mycol FROM mytable WHERE mycol LIKE CAST('%Â' AS BINARY);

【讨论】:

  • 不确定发生了什么,但我没有得到任何结果。使用 phpMyAdmin 作为客户端
  • 显示show create table mytableshow variables like '%character_set%'的输出?
  • 问题已更新。我们的团队在创建数据库时弄乱了排序规则,但现在,这就是我们的情况。我们还没有计划和测试使用同构排序规则的数据库升级,但是由于涉及到用户、密码等,我们需要仔细计划一下