我的意思是从这里:
SELECT * FROM my_tab WHERE col1 = 'name1' AND col2 in(1,2,3);如何获取此信息:
SELECT * FROM my_tab WHERE col1 = ? AND col2 in(?,?,?);pg_stat_statements做类似的事情,但是它不保存原始的(带参数的)语句。我也需要原始的查询。
可能有一些开放源码或正则表达式,可以做到这一点?
发布于 2021-10-04 08:24:36
如果您有访问Python的权限,您可以尝试:
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)这将打印:
SELECT * FROM my_tab WHERE col1 = 'name1' AND col2 IN (?,?,?);发布于 2021-10-04 10:46:33
对于特定的查询,您也许能够做到这一点,但是这个问题的一般解决方案需要解析SQL语句,这至少可以说是复杂的。
试着为你的问题找到一个不同的解决方案。
https://stackoverflow.com/questions/69432933
复制相似问题