我想在Rails查询中执行数据库端字符串连接,并以与数据库无关的方式进行。
SQL-92将双引号(||)指定为串联运算符。不幸的是,MS SQL Server似乎不支持它。它使用+代替。
||
+
我猜想Rails的SQL语法抽象已经解决了特定于数据库的运算符问题。如果确实存在,该如何使用?
我遇到了同样的问题,却从未想到过Rails内置的任何东西。所以我写了这个小方法。
# Symbols should be used for field names, everything else will be quoted as a string def db_concat(*args) adapter = configurations[RAILS_ENV]['adapter'].to_sym args.map!{ |arg| arg.class==Symbol ? arg.to_s : "'#{arg}'" } case adapter when :mysql "CONCAT(#{args.join(',')})" when :sqlserver args.join('+') else args.join('||') end end
我在想有人真的应该编写某种SQL帮助程序插件,该插件可以使用当前适配器的正确函数或运算符来自动格式化简单的SQL表达式。也许我自己写一个。