0

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

此查询不显示组合词。但是这个用户有名字和姓氏。

任何人都可以帮助我吗?谢谢。

4

2 回答 2

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   昌, 畅, 长     富, 芙
于 2015-09-01T15:37:54.980 回答
0
SELECT CONCAT(person_first_name, ' ', person_last_name) 
FROM dm_account 
WHERE id=2184

你已经使用了表别名a但没有定义它

于 2015-09-01T15:32:28.590 回答