【发布时间】:2016-06-27 18:52:18
【问题描述】:
我遇到了 mysql 搜索 LIKE 的问题
例如,在数据库表城市中,我记录了“Rīga”
您如何在数据库中看到单词“Rīga”有“ī”而不是“i”字母。
即使我用普通的“i”字母写,是否可以进行搜索?
因为这个变体不起作用
SELECT * FROM `city` WHERE `title` LIKE '%Riga%'
【问题讨论】:
我遇到了 mysql 搜索 LIKE 的问题
例如,在数据库表城市中,我记录了“Rīga”
您如何在数据库中看到单词“Rīga”有“ī”而不是“i”字母。
即使我用普通的“i”字母写,是否可以进行搜索?
因为这个变体不起作用
SELECT * FROM `city` WHERE `title` LIKE '%Riga%'
【问题讨论】:
【讨论】:
$q1 = mq($db2, "SELECT * FROM city WHERE title LIKE _utf8'%ka%' collate utf8_general_ci"); 这解决了所有问题 :)
%ka%r% 之类的东西,看看会发生什么。
在执行查询之前,您应该使用与数据库相同的连接编码。
如果您使用 PDO,只需将连接编码设置为:
$encoding = "utf8"; //replace this value with the character encoding you're using
$pdo = new PDO("mysql:host=host;dbname=my_db;charset=$encoding", $user, $pass);
如果您使用的是 MYSQLI,请使用mysqli_set_charset:
$encoding = "utf8"; //Use your encode here
$con = mysqli_connect("host",$user,$pass,"my_db");
mysqli_set_charset($con, $encoding);
编辑~
您可能还需要在数据库中使用不区分重音的排序规则 (UTF8_GENERAL_CI)。 我相信您的问题已经在MySQL charsets and collations: accent insensitive doesn't work@ 帖子中解决了
【讨论】:
city WHERE title LIKE '%ka%'”;它只返回 Kandava,但我希望他也返回 Kārsava。我尝试了您的解决方案,但没有奏效