gpt4 book ai didi

MySQL连接汉字返回NULL

转载 作者:行者123 更新时间:2023-11-29 12:01:13 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com