转义 SQL 查询/活动记录中的"@"字符



如何在SQL查询中转义"@"查询。

我正在使用活动记录(3(。

suite_scenarios = Scenario.where(suite_id: suite_id)
tag_pair = ["@regression","@daily_feature"]
tag_pair_scenarios = suite_scenarios.where("metadata LIKE '%#{tag_pair[0]}%'").where("metadata LIKE '%#{tag_pair[1]}%'")

借用这个解释如何使用占位符条件构造 ILIKE 查询的答案,似乎您可以像这样构造查询:

suite_scenarios.
  where("metadata LIKE '%' || ? || '%'", tag_pair[0]).
  where("metadata LIKE '%' || ? || '%'", tag_pair[1]")

这还有一个额外的好处,那就是保护你免受SQL注入的影响,以防tag_pair来自用户输入(表单参数(。

相关内容

最新更新