MySQL编写了语句和区分大小写

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (94)

在过去我使用query了mysqli类的方法。现在我使用prepare方法重写了很多代码。我有一个表与排序规则utf8mb4_bin(区分大小写),但用户应执行不区分大小写的查询,过去的查询是这样的

SELECT SQL_CALC_FOUND_ROWS * FROM utenti WHERE nome LIKE _utf8mb4 ? COLLATE utf8mb4_unicode_ci ORDER BY id_utente ASC

我知道我不能在准备好的语句中使用这种语法,最好的方法是什么?我认为将存储值和查询值强制为小写,但我认为这不是最好的方法。

提问于
用户回答回答于

您应该能够对列应用不区分大小写的排序规则,然后将其与您的参数进行比较:

SELECT * FROM utenti 
WHERE nome COLLATE utf8mb4_unicode_ci LIKE ? 
ORDER BY id_utente ASC

PS:我建议删除SQL_CALC_FOUND_ROWS。如果你不使用它没有任何意义LIMIT。它只能使性能黯然失色。

用户回答回答于

您需要做的就是在php中将值转换为大写,并upper在查询中包装您的列。

select * from table where upper(column) like ?

随着?被设置为您正在寻找的字符串的大写值。

扫码关注云+社区

领取腾讯云代金券