我想在表的两列中使用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;
该查询没有显示组合词。但是这个用户有名字和姓氏。
有人可以帮助我吗?
谢谢。
最佳答案
如果列字符集为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 昌, 畅, 长 富, 芙
关于mysql - MySQL Concat中文字符返回NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32335149/