我想在表的两列中使用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/

10-13 00:49