我想在表的两列中使用 LIKE 运算符进行搜索。列名称为: person_first_name、person_last_name 。我找到了一种像一列一样搜索两列的方法。方法是列必须是 CONCAT 并在连接的字符串中搜索,但我的值是中文。我想搜索连续的中文单词。早些时候,我用这种方式“COLLATE UTF8_GENERAL_CI”搜索了中文,但这在连接字符串中不起作用。我尝试了很多方法,但没有得到真正的结果。
示例:
SELECT * FROM (`dm_account` a) WHERE CONCAT(a.person_first_name, ' ', a.person_last_name) COLLATE UTF8_GENERAL_CI LIKE '%ANY CHINESE CHARACTER%' ORDER BY `a`.`createdate` asc;
但是这个查询没有返回给我任何记录。
SELECT CONCAT(a.person_first_name, ' ', a.person_last_name) FROM dm_account WHERE id=2184;
此查询不显示组合词。但该用户有名字和姓氏。
有人可以帮助我吗? 谢谢。
最佳答案
未定义表别名 a
如果列字符集为 utf8 并且排序规则为 utf8_general_ci,则另外不需要 COLLATE UTF8_GENERAL_CI .
您可以查看这个示例
CREATE TABLE `person` (
`id` int(11) NOT NULL,
`first_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`last_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
人员记录
INSERT INTO `person` VALUES ('1', '昌, 畅, 长 ', '富, 芙');
查询
SELECT * FROM person WHERE CONCAT(first_name, ' ', last_name) LIKE "%昌, 畅, 长 富, 芙%"
结果
1 昌, 畅, 长 富, 芙
关于MySQL连接汉字返回NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335149/