【发布时间】:2017-07-11 16:14:50
【问题描述】:
我有一个表 'article' 列 'content' 。我想查询 Postgresql 以搜索包含在变量 'temp' 中的字符串。此查询工作正常-
pool.query("select * from article where upper(content) like upper('%some_value%')");
但是当我使用占位符 $1 和 [temp] 代替 some_value 时,我得到了上述错误 -
pool.query("select * from article where upper(content) LIKE upper('%$1%')",[temp] );
注意 - 这里 $1 是一个占位符,应该替换为 [temp] 中的值,但我猜它会将 '%$1%' 视为字符串。没有引号 ' ' ,LIKE 运算符不起作用。我也试过查询 -
pool.query("select * from article where upper(content) LIKE upper(concat('%',$1,'%'))",[temp] );
确保 $1 不被视为字符串文字,但它给出了错误 - 错误:无法确定参数 $1 的数据类型
【问题讨论】:
-
你安装了哪些版本的节点和包?
-
node 7.7.1 ,其他包也是最近的,因为我前几天安装的。
-
我无法重现错误消息,但以下答案对您的情况很有意义:stackoverflow.com/a/26209691/674225。即:SQL 使用
'作为字符串文字。 -
您的意思是我发布的第二个查询在您的系统上运行良好?此外,您提供的答案链接只是建议应使用不带引号的占位符,但我不认为 SQL 的 LIKE 运算符不带引号也能工作......
-
参数符号肯定需要在引号之外。我没有尝试过
concat版本,我认为它可以工作,但是——就像你知道的——没有。发现||解决了问题并提交了答案。