MySQL连接汉字返回NULL

标签 mysql character-encoding string-concatenation mysql-5.5 collate

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

相关文章:

c - 如何将所有命令行参数连接在一起并打印出结果值?

java - 无法使用java中的扫描器获取多个字符串输入

java - mysql 中的 hibernate 关系

PHP 只打印 SQL 查询结果的选择行

java - 为什么这个简单的程序在 Java 和 AIX 中执行时会导致不同的回车/换行文件?

tomcat - UTF-8 编码的 j_security_check 用户名在 Tomcat 领域中被错误地解码为 Latin-1

php - MYSQL排序和限制使用某一行并选择上一行和下一行

php - 输出到 CSV 需要 Forever 数百万条记录 - PHP - Mysql

vim - Vim 中的中欧字符并打印(PDF)它们

c++ - 如何将 char 和 char* 附加到现有字符串?