繁体   English   中英

SQL语句没有意义

[英]SQL Statement Doesn't make sense

所以我正在使用一个名为json-sql https://github.com/2do2go/json-sql的节点模块

但最终结果是

    sql.query
// insert into users (name, lastname, age, gender) values ($p1, $p2, 24, $p3);

sql.values
// { p1: 'John', p2: 'Snow', p3: 'male' }

有没有一种快速的方法可以使该SQL可读? 我想要一堆这样的语句,并将其制成一个.sql文件,以便稍后在sql服务器上运行

不幸的是,该库无法本地生成可执行MS SQL兼容语句。

有效的MS SQL准备语句如下所示:

sp_EXECUTEsql @statement=N'Select @p as t', @parameters = N'@p varchar(50)', @p=N'Test'

因此,在这种情况下,您需要做三件事:

  1. 使用库的options参数将ValuesPrefix设置为@而不是默认的$
  2. 编写某种方法以获取sql.values结果,并生成上述@parameters的值以及每个单独的参数值。
  3. 将所有片段连接在一起,形成类似于上面的语句。

看来您可以使用选项separatedValues: false来获取不带占位符的纯SQL查询。

例如,在您的情况下:

var jsonSql = require('json-sql')({separatedValues: false});

sql.query
// insert into "users" ("name", "lastname", "age", "gender") values (\'John\', \'Snow\', 24, \'male\');

然后,您只需要替换不需要的字符(例如,双引号)即可;

我希望有人会觉得有用。

该模块显然想让你插入由关联数组所描述的值sql.values成给出的查询字符串sql.query 这些特定sql.querysql.values的结果将是

insert into users (name, lastname, age, gender) values ('John', 'Snow', 24, 'male')

它的外观与许多程序化数据库接口中存在的“预备语句”的概念相似,但实现方式不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM