DA.*_*DA. 64 mysql database postgresql ruby-on-rails heroku
我在本地运行MySQL数据库进行开发,但部署到使用Postgres的Heroku.Heroku几乎可以处理所有事情,但是我的不区分大小写的Like语句变得区分大小写.我可以使用iLike语句,但我的本地MySQL数据库无法处理.
编写与MySQL和Postgres兼容的不区分大小写的查询的最佳方法是什么?或者我是否需要根据我的应用正在与之交谈的数据库编写单独的Like和iLike语句?
Mar*_*rkR 73
这个故事的寓意是:不要使用不同的软件堆栈进行开发和生产.决不.
你最终会得到你无法在开发中重现的错误; 你的测试将毫无价值.只是不要这样做.
使用不同的数据库引擎是不可能的 - 会有更多的情况,它的行为与LIKE不同(同样,您是否检查了数据库使用的排序规则?在每种情况下它们是否相同?如果没有,您可以忘记工作相同的varchar列上的ORDER BY)
Pau*_*lin 58
select * from foo where upper(bar) = upper(?);
如果在调用者中将参数设置为大写,则可以避免第二个函数调用.
jsw*_*ner 36
使用Arel:
Author.where(Author.arel_table[:name].matches("%foo%"))
matches将使用ILIKEPostgres 的运算符,以及LIKE其他所有内容.
Ada*_*rce 13
在postgres中,你可以这样做:
SELECT whatever FROM mytable WHERE something ILIKE 'match this';
我不确定是否有相同的MySQL,但你总是这样做有点难看,但应该在MySQL和postgres中工作:
SELECT whatever FROM mytable WHERE UPPER(something) = UPPER('match this');
有几个答案,其中没有一个非常令人满意.
REGEXP不区分大小写(除非与BINARY一起使用),并且可以使用,如此...
    SELECT id FROM person WHERE name REGEXP 'john';
......匹配'John','JOHN','john'等.
| 归档时间: | 
 | 
| 查看次数: | 51358 次 | 
| 最近记录: |