我正在编写一个需要同时处理mysql和postgresql的应用程序。
我必须使用like
来比较某些值。
在mysql LIKE
中,它不区分大小写。
在postgresql LIKE
中,它区分大小写,ILIKE
不区分大小写。
在匹配必须不区分大小写的情况下,制作可用于两者的可靠查询的最佳方法是什么?
PDO是否有解决方案?
答案 0 :(得分:10)
确保不区分大小写的LIKE的最简单方法是使用类似以下内容之一:
LOWER(column_name) LIKE LOWER(pattern)
UPPER(column_name) LIKE UPPER(pattern)
或者您可以在SQL之外对pattern
进行大小写/小写,只需使用:
LOWER(column_name) LIKE down_cased_pattern
UPPER(column_name) LIKE up_cased_pattern
我倾向于使用LOWER
出于习惯,因为小写更容易阅读,因此更容易调试。
答案 1 :(得分:3)
这是Database Abstraction Layer的工作。
PDO does not执行您正在寻找的内容,但如果您google for them,则会有一些PHP DAL。
PDO不提供数据库 抽象;它不会重写SQL或 模拟缺少的功能。你应该 如果使用完整的抽象层 你需要那个设施。