![]() |
1
2
你面临的问题是因为插值。动态列名和表名与注入动态值不同。 您可能想尝试一下:
这里有更多细节- https://github.com/datalanche/node-pg-format 肮脏的ES6修复可能是:
如果您计划构建许多动态查询,请考虑尝试- https://knexjs.org/ |
![]() |
2
1
不能创建准备好的语句,也不能在查询中插入动态表或列名,因为这将不允许完全准备语句。如果必须执行prepared语句,则需要知道在prepared statements中必须定义输入数据类型(动态变量)和返回数据类型(返回列)。因为*将为不同的表返回不同的返回类型,所以上面的方法永远行不通。例如,如果您知道您总是返回一个id和一个名称,那么您可以在postgresql中创建一个函数,如下所示:
现在可以动态查询最后一个选择。 |
![]() |
3
0
我确实找到了部分解决办法。虽然我在postgres网站上找不到关于这方面的任何文档,但我在网上找到了一些文章,其中展示了使用cast的速记符号将字符串作为列名进行强制转换的示例。
正如在问题中提到的,我发现一些stackoverflow文章提到
对于表名,同样的事情不起作用。 |
|
tggtsed · PostgreSQL从平均值中排除值 1 年前 |
![]() |
Dawid · 为什么我不能在子查询中使用表别名? 2 年前 |
![]() |
CraZyCoDer · 在PostgreSQL中锁定潜在事务 2 年前 |
![]() |
ranebec · 计数时如何返回0而不是null? 2 年前 |
![]() |
Flo · 分组依据中的SQL大小写 2 年前 |