首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将每个参数转换为查询语句的问号

问将每个参数转换为查询语句的问号
EN

Stack Overflow用户
提问于 2021-10-04 08:21:07
回答 2查看 33关注 0票数 0

我的意思是从这里:

代码语言:javascript
复制
SELECT * FROM my_tab WHERE col1 = 'name1' AND col2 in(1,2,3);

如何获取此信息:

代码语言:javascript
复制
SELECT * FROM my_tab WHERE col1 = ? AND col2 in(?,?,?);

pg_stat_statements做类似的事情,但是它不保存原始的(带参数的)语句。我也需要原始的查询。

可能有一些开放源码或正则表达式,可以做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2021-10-04 08:24:36

如果您有访问Python的权限,您可以尝试:

代码语言:javascript
复制
sql = "SELECT * FROM my_tab WHERE col1 = 'name1' AND col2 IN (1,2,3);"
output = re.sub(r'\bIN\s*\((.*?)\)', lambda m: 'IN (' + re.sub(r'\w+', '?', m.group(1)) + ')', sql)
print(output)

这将打印:

代码语言:javascript
复制
SELECT * FROM my_tab WHERE col1 = 'name1' AND col2 IN (?,?,?);
票数 1
EN

Stack Overflow用户

发布于 2021-10-04 10:46:33

对于特定的查询,您也许能够做到这一点,但是这个问题的一般解决方案需要解析SQL语句,这至少可以说是复杂的。

试着为你的问题找到一个不同的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69432933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档