我知道之前已经问过这个问题。但似乎没有什么对我有用。
所以我在下面有这个代码。我想要做的是在数据库中搜索表product_description
并获取列name
(此部分到目前为止有效)。列名称的排序规则为utf8_general_ci
$SearchWord1 = "Squirl";
$ExistingWord1 = "Banana";
$ReplacerWord1 = "Orange";
我有3个产品:
name: SQUIRL banana pie
name: Squirl BANANA pie
name: SQUIRL banana pie
我想搜索Squirl,搜索应该抓住Squirl和SQUIRL。
香蕉$ExistingWord1
也是如此,它也是Banana,也应该搜索BANANA
$sql1 = "UPDATE product_description SET name = REPLACE(name, '$ExistingWord1', '$ReplacerWord1') WHERE name LIKE '%$SearchWord1%';";
if ($conn->query($sql1) === TRUE) {
echo "<h1>Everything worked as planned</h1>";
} else {
echo "Error updating record: " . $conn->error;
}
我在stackoverflow上阅读了几篇帖子,到目前为止没有任何帮助。
答案 0 :(得分:4)
我不知道是不是我,但我不确定你的问题。
如果您想要的是确保找到您想要的项目而不管情况如何,那么您可以使用名为UPPER(...)和LOWER(...)的MySQL函数来转换字符串分别为大写或小写
例如:
SELECT name FROM product_description WHERE LOWER(name) = 'squirl';
将匹配Squirl,SQUIRL或squirl
答案 1 :(得分:0)
在mysql中,varchar和text不区分大小写 http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
确保您的文字不包含其他语言的字符
答案 2 :(得分:0)
默认情况下,Mysql不区分大小写。
您可能拥有区分大小写的字符集,或者您的列已分配了BINARY
类型。
BINARY
a和A不同,这不是你想要的。
参考:this SO post。
小心 - 因为当产品/商品具有相同的名称并且您没有按ID获取时,CI表可能会给您重复的结果;)
答案 3 :(得分:0)
通常,在MySQL中,基于字符串的搜索不区分大小写。