如何使用JavaScript动态替换SQL查询的一部分
我正在使用Node.js编写SQL查询。查询形成后,我将调用数据库以获取数据 我的问题如下:如何使用JavaScript动态替换SQL查询的一部分,javascript,mysql,sql,node.js,database,Javascript,Mysql,Sql,Node.js,Database,我正在使用Node.js编写SQL查询。查询形成后,我将调用数据库以获取数据 我的问题如下: and technology in (values) and subTechnology in (values) and geo in (values) and 等等。现在,以这种方式,值可以是('a')或('b','c','a')。这将是动态的 现在我想删除(值)中的部分和技术。我可以使用str.replace()方法。但是,对于值部分,我必须硬编码。那是我不想要的。而值也是动态出现的。 有没有捷径
and technology in (values) and subTechnology in (values) and geo in (values) and
等等。现在,以这种方式,值可以是('a')
或('b','c','a')
。这将是动态的
现在我想删除(值)
中的部分和技术。我可以使用str.replace()
方法。但是,对于值
部分,我必须硬编码。那是我不想要的。而值
也是动态出现的。
有没有捷径可走
我不想使用进行循环或类似的操作。是的,可以使用substr()
、replace()
和indexOf()
方法来完成
比如说,
var a = "and technology in('a', 'b') and subtechnology in('b', 'd')"
var b = a.indexOf('technology')
var c = a.indexOf('and', b)
a = a.replace(a.substr(b, c-1), '')
还有更简洁的方法吗?字符串插值呢
var values = "what ever you want";
var query = `and technology in(${values})`;
现在字符串中有了一个变量,您可以用这个变量在代码中做任何您想做的事情。也许可以使用正则表达式来匹配您想从实际字符串中得到的内容并得到它?或者可以列出这些技术
、子技术
和地理
并使用此列表生成最终查询?您可以在生成查询之前从列表中删除不需要的列。是的,可以使用substr()和indexOf()方法完成。这里的用例是什么?为什么不能首先按照您想要的方式编写查询?操作SQL可能非常棘手,语法上充满了细微差别,因此实际上并不存在通用的解决方案。@tadman:你的观点很好。但是这个字符串用于查询的两个或三个部分,其中只有一个地方我想删除上面提到的内容。但它会产生一个字符串,如“和('b','d')”
中的子技术。我能搞定那件事。你能给我一份好的正则表达式文档吗。一个简单而不令人困惑的问题。啊,出于某种原因,我认为一个人应该在和“
之前停下来a.replace(/technology\s+in\s*\([^)]*\)\s*和\s*/,“”)
无论如何都应该工作得更好。看看