【问题标题】:Blazer - Escape Characters西装外套 - 逃脱角色
【发布时间】:2021-08-25 15:31:04
【问题描述】:

我觉得我遗漏了一些东西,但我在 GH 的文档中找不到它。

在包含 ' 或 "的字符串中搜索时,Blazer 的转义字符是什么。

例子:

SELECT * FROM "search_filters" 
where "params" like '%with_vehicles_id"=>[%'
LIMIT 100

更新: 底层数据库是 Postgres 11。这是一个 blazer 工具问题,因为上面的查询在 dBeaver 或控制台之类的工具中工作得很好。出于某种原因,我认为这与 Blazer 在发送查询之前如何解析查询有关。

【问题讨论】:

  • 请注明您使用的数据库
  • Postgres 11 - 抱歉,很好。
  • 能否也将错误信息添加到问题中?

标签: ruby-on-rails blazer


【解决方案1】:

我对 Blazer 不是很熟悉,但它看起来像是一个 BI 工具,可以让您对数据库运行 SQL 查询,并且有一个游乐场 here

对于 PostgreSQL,您不需要为单引号内的双引号做任何特殊的事情。您编写的查询将在 postgres 终端中执行,并且相同的方法在 blazer playground 中有效。

SELECT * FROM "search_filters" 
where "params" like '%text"text%'
LIMIT 100

要查询包含单引号的字符串,PosgreSQL 让您使用两个连续的单引号,如下所示:

SELECT * FROM "search_filters" 
where "params" like '%text''text%'
LIMIT 100

这是一个包含更多信息的链接: https://www.prisma.io/dataguide/postgresql/short-guides/quoting-rules

-- 更新--

根据您的错误消息(“在“LIMIT”第 3 行或附近出现语法错误:LIMIT 100 LIMIT 1000”),似乎有两个“LIMIT”子句被添加到 SQL 查询中。您是否有正在修改查询的 gem/插件,有没有办法禁用它们以查看是否导致问题?

【讨论】:

  • 是的,我明白如何直接用PG来做。这是一个 Blazer 问题,试图弄清楚如何使用该工具进行操作。业务中还有很多其他人没有直接的 db 访问权限,但是将其用作快速发现工具,并且在查看 str 字段时总是会出现这个问题。
  • 您能否包含您看到的错误?
  • 我没有看到任何与转义引号相关的 blazer gem 问题。用户提交的与引用有关的问题与智能变量的引用方式有关,这可能会导致意外问题。您是否在查询中使用智能变量?见github.com/ankane/blazer/issues/340
  • syntax error at or near "LIMIT" LINE 3: LIMIT 100 LIMIT 1000 /*blazer,user_id:189,user_name:Removed^
  • 删除中间的 " 可以解决所有问题,但很明显,我们正在寻找 ",但是是的,你明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2019-09-21
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多