【问题标题】:How can type a query to PostgresSQL that includes quotes, by using pg's Pool如何使用 pg 的 Pool 键入包含引号的 PostgresQL 查询
【发布时间】:2021-12-28 11:36:52
【问题描述】:

我正在使用 Nodejs、Express 和 PostgreSQL 构建 API

我也是用pg的Pool来查询数据库的

我想做一个包含 LIKE 的查询,如 SELECT * FROM database WHERE field LIKE ‘%string%’,(文档说它必须包含引号)

问题是在写查询的时候,我输入:

pool.query(“SELECT * FROM database WHERE field LIKE ‘%$1%’”, [ str ], (…) => {
   …
});

pool.query 应该用 str 替换 $1,但我收到错误:列“%$1%”不存在

【问题讨论】:

    标签: node.js postgresql rest express


    【解决方案1】:

    LIKE 关键字右侧的整个值是单个字符串,因此您必须为整个内容使用占位符。使用您正在使用的 pg 客户端,如下所示:

    pool.query(“SELECT * FROM database WHERE field LIKE $1", [ "%" + str + "%" ], (…) => {
       …
    });
    

    您还可以使用https://www.atdatabases.org,它可以让您内联占位符,同时仍然可以正确地转义它。看起来像:

    await db.query(sql`
      SELECT * FROM database WHERE field LIKE ${`%${str}%`}
    `)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-15
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 2021-08-07
      • 2013-06-23
      相关资源
      最近更新 更多