当前位置: 首页 > 面试题库 >

Rails中与数据库无关的SQL字符串串联

宫俊才
2023-03-14
问题内容

我想在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表达式。也许我自己写一个。



 类似资料:
  • 本文向大家介绍SQL中的字符串函数,包括了SQL中的字符串函数的使用技巧和注意事项,需要的朋友参考一下 SQL中的字符串函数都用于操作字符串值。SQL指定了许多字符串函数。其中一些领域如下: ASCII码(str) 此函数返回提供的字符串str中第一个单词的ASCII或数字值。如果为空字符串,则返回0。 例 这将返回S的ASCII值,即83,因为它是字符串中的第一个字符。 BIN(n) 这里n是二

  • 问题内容: 在Python中,什么时候以及什么时候使用字符串连接与字符串替换比较容易。由于字符串连接的性能有了很大的提高,这(成为更多)是一种风格上的决定,而不是一种实际的决定吗? 举一个具体的例子,如何处理灵活的URI: 编辑:也有关于加入字符串列表和使用命名替换的建议。这些是中心主题的变体,即在什么时候做正确的方法?感谢您的回复! 问题答案: 根据我的机器,连接的速度(明显)更快。但是从风格上

  • 问题内容: 我正在从事Java代码优化。我不清楚或符号之间的区别: 第2行和第3行有什么区别? 问题答案: 这种方法使用StringBuilder创建结果字符串 此方法仅调用的静态方法来获取int的String版本 依次调用

  • 我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,

  • 对性能是否有影响? 不同Java版本的行为是否有差异?

  • 问题内容: 这个问题已经在这里有了答案 : 如何确定Pandas列是否包含特定值 (9个答案) 3年前关闭。 我已经从文件中读取了一个熊猫数据框: 当我尝试时,它会返回,但是当我尝试时,它会返回(这就是我在这种情况下的预期)。 我不明白为什么会有行为上的差异。我读到返回列的Numpy表示形式,但是为什么返回? 谢谢! 问题答案: 熊猫系列就像字典。 搜索其索引(或键),然后 检查字符串是否在该Se