我有一个表place
,其中包含地点名称,其中一些名称中有一个撇号,例如名为OJ's
的地方。
当有人写出完全相同的单词时,他会得到地方数据,但如果他错过了撇号'
,他就什么也得不到。
任何人都可以帮我写出正确的mysql
声明,让我获取字符串,无论用户是否记下撇号。
答案 0 :(得分:0)
尝试soundex ..这将忽略特殊字符
SELECT * FROM `test` WHERE soundex(column)=soundex('input')
实施例
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`itemname` varchar(5) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Dumping data for table `test`
--
INSERT INTO `test` (`id`, `itemname`) VALUES
(1, 'ab''s'),
(2, 'abs'),
(3, 'aa'),
(4, 'a''a'),
(5, 'C'),
(6, 'C');
SELECT * FROM `test` WHERE soundex(itemname)=soundex('abs')
将返回
1|ab's
2|abs