我在本地运行MySQL数据库进行开发,但部署到使用Postgres的Heroku。Heroku处理几乎所有的事情,但是我的不区分大小写的Like语句变得区分大小写。我可以使用iLike语句,但是我的本地MySQL数据库无法处理这一点。
编写与MySQL和Postgres兼容的不区分大小写的查询的最佳方法是什么?或者,我是否需要根据我的应用程序与之对话的数据库来编写单独的Like和iLike语句?
发布于 2008-10-15 01:16:19
select * from foo where upper(bar) = upper(?);
如果在调用方中将参数设置为大写,则可以避免第二次函数调用。
发布于 2009-10-11 14:47:07
这个故事的寓意是:不要在开发和生产中使用不同的软件堆栈。绝不可能。
你只会得到你不能在dev中重现的bug;你的测试将一文不值。不要这样做。
使用不同的数据库引擎是不可能的--将会有更多的情况下,它的行为不同于像这样(另外,您是否检查了数据库使用的排序规则?它们在每种情况下都是相同的吗?如果不是这样,您可以忘记在varchar列上使用ORDER BY )
发布于 2012-04-14 07:15:01
使用Arel:
Author.where(Author.arel_table[:name].matches("%foo%"))
matches
将对Postgres使用ILIKE
运算符,对其他所有内容使用LIKE
运算符。
https://stackoverflow.com/questions/203399
复制相似问题