MySQL SELECT WHERE LIKE转义数据

时间:2011-10-28 19:56:03

标签: mysql sql

我有下表:

--
-- Table structure for table `DESTINATIONS`
--

CREATE TABLE IF NOT EXISTS `DESTINATIONS` (
  `DEST_ID` int(7) NOT NULL auto_increment,
  `COUNT_ID` int(6) NOT NULL,
  `REG_ID` int(6) NOT NULL,
  `CITY_ID` int(6) NOT NULL,
  `CREATE_DATE` datetime NOT NULL,
  `DESTINATION` varchar(256) NOT NULL,
  `APPROVED` tinyint(1) NOT NULL,
  PRIMARY KEY  (`DEST_ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=192 ;

--
-- Dumping data for table `DESTINATIONS`
--

INSERT INTO `DESTINATIONS` (`DEST_ID`, `COUNT_ID`, `REG_ID`, `CITY_ID`, `CREATE_DATE`, `DESTINATION`, `APPROVED`) 
VALUES (166, 9, 818, 0, '2011-10-27 15:24:20', 'Freeman\\''s Bay', 0);

我正在尝试运行以下查询:

SELECT * 
FROM  `DESTINATIONS` 
WHERE  `DESTINATION` LIKE  '%Freeman\'s Bay%'

返回0结果。但是,将LIKE子句剥离到引号之前的任何内容都会找到并返回匹配。

显然,我做错了什么,但我还没弄清楚到底是什么。我可以不执行SELECT LIKE吗?我错误地逃过了报价吗?任何意见都表示赞赏!

4 个答案:

答案 0 :(得分:2)

插件未正确转义。您实际上是在插入值Freeman\'s Bay,包括\。选择没问题。

选项未正确转义。您已插入值Freeman\'s Bay,但您正在寻找Freeman's Bay,不包括\

答案 1 :(得分:1)

'%Freeman\'s Bay%''Freeman\\''s Bay'甚至明显不同(显然不包括%)。如果你修改了你想要的格式,你就会很好

答案 2 :(得分:0)

您是否尝试编写LIERT字符串,因为它出现在INSERT语句中,但两端都有%?

答案 3 :(得分:0)

您是否尝试使用重复引用而不是转义它?因此:'Freeman''s Bay'

在两个地方使用相同的语法。