最后一个字母为 '%n' 的 mysql SELECT 字符串不起作用

标签 mysql sql-like

我希望 mysql 向我显示一个表,其中列的最后一个字符串具有特定字母

SELECT * FROM myTable WHERE col LIKE '%n';

没有显示任何内容(显示 0 行)。

但是这个有效

SELECT * FROM myTable WHERE col LIKE 'L%';

因此,当查找字符串的开头时,它会给我一个输出,但当查找字符串的结尾时,它不会。我也尝试过其他列,但没有成功。

为什么?

它正在寻找的词是伦敦

表格是这样创建的(在网页上找到了这个示例):

CREATE TABLE IF NOT EXISTS `company` (
  `COMPANY_ID` varchar(6) NOT NULL DEFAULT '',
  `COMPANY_NAME` varchar(25) DEFAULT NULL,
  `COMPANY_CITY` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`COMPANY_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `company`
--

INSERT INTO `company` (`COMPANY_ID`, `COMPANY_NAME`, `COMPANY_CITY`) VALUES
('18', 'Order All', 'Boston\r'),
('15', 'Jack Hill Ltd', 'London\r'),
('16', 'Akas Foods', 'Delhi\r'),
('17', 'Foodies.', 'London\r'),
('19', 'sip-n-Bite.', 'New York\r');

最佳答案

您的示例数据显示回车符 (\r) 作为字符串中的最后一个字符。如果我们从搜索中删除它,剩下的字符串就会匹配。

mysql> SELECT * FROM company where TRIM('\r' from company_city) LIKE '%n';
+------------+---------------+--------------+
| COMPANY_ID | COMPANY_NAME  | COMPANY_CITY |
+------------+---------------+--------------+
      |      | Order All     | Boston
      |      | Jack Hill Ltd | London
      |      | Foodies.      | London
+------------+---------------+--------------+

我建议不要在字符串中存储尾随空白字符。请注意应用程序演示文稿中的换行符和回车符,而不是数据中的换行符和回车符。

关于最后一个字母为 '%n' 的 mysql SELECT 字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74696029/

相关文章:

MySQL:不喜欢

mysql - 如何在mysql中同时使用NOT LIKE和JOIN?

mysql - 在 TIMEDIFF 函数中使用时间戳列值

sql - 使用 like 运算符检查配置单元中的模式

php - 如何在php中爆破mysql表数据

mysql - 如何使 'from' 作为 mysql 中的列名?

带有多个通配符的 MySQL "NOT LIKE"查询

mysql - SQL: 'like' 条件内的附加条件

php - MySQL Where 子句错误

php - SP 插入后,下一页结果为空,直到重新加载