我有下表:
--
-- 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吗?我错误地逃过了报价吗?任何意见都表示赞赏!
答案 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'
在两个地方使用相同的语法。