我想在表的两列中使用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;
此查询未向我显示组合词。但是这个用户有名字和姓氏。
任何人都可以帮助我吗? 感谢。
答案 0 :(得分:1)
如果列字符集 utf8 且排序规则为 utf8_general_ci ,则表格别名a
未另外定义则不需要 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 昌, 畅, 长 富, 芙
答案 1 :(得分:0)
SELECT CONCAT(person_first_name, ' ', person_last_name)
FROM dm_account
WHERE id=2184
您使用了表别名a
但未定义