记一次大坑,express+oracledb使用like语句时的问题

本文记录了一位开发者在使用 Oracle 数据库进行 SQL 查询时遇到的问题,即在 LIKE 语句中直接使用 `%:[变量名]` 会导致错误。经过排查,发现 `%` 和 `:` 字符冲突。解决方案是将 `%` 字符嵌入到变量中,如 `a='%'+goodname+'%'`,然后在 SQL 语句中使用变量 `:a`,从而成功避免了冲突。这是一个关于 SQL 查询和字符串处理的技巧分享。

封面与文无关,是本人在大学做公交线路查询系统课设所画的路线图,废话不多说,进入正文

在使用like语句时,直接在spl语句中输入 ‘%:[变量名]’ 会报错,如下图

let searchGood = async function searchGood (goodname) {
  let conn

  try {
    conn = await oracledb.getConnection(config)

    const result = await conn.execute(
      "select gid,image,title,price from goods where title like '%:name%' ",
      [goodname]
    )
    // console.log(1)
    // console.log(result.rows[0])
    return result
  } catch (err) {
    console.log(2)
    console.log('Ouch!', err)
  } finally {
    if (conn) { // conn assignment worked, need to close
      await conn.close()
    }
  }
}

百思不得其解,一遍遍控制变量看哪些字符冲突了,查了很多资料都没有解决办法,本人使用的技术栈实在是太冷门了可能,哈哈哈哈哈

最后发现是%和:这两个字符冲突了,遂修改原始变量将%字符嵌入其中,如下图,就没问题了基本

let searchGood = async function searchGood (goodname) {
  let conn

  let a='%'+goodname+'%'

  try {
    conn = await oracledb.getConnection(config)

    const result = await conn.execute(
      "select gid,image,title,price from goods where title like :name ",
      [a]
    )
    // console.log(1)
    // console.log(result.rows[0])
    return result
  } catch (err) {
    console.log(2)
    console.log('Ouch!', err)
  } finally {
    if (conn) { // conn assignment worked, need to close
      await conn.close()
    }
  }
}

 

新人博主,会将开发中遇到的问题记录下来,如有帮助烦劳各位大佬三连支持,谢谢浏览~ 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值