psycopg2用'\'反斜杠替换'%5C'

时间:2019-04-05 19:05:09

标签: python sql amazon-redshift psycopg2

我尝试对AWS Redshift中的URL进行解码。当我在SQL Workbench上运行以下代码时,一切都很好。但是,当我通过psycopg2使用相同的代码时,它给了我错误消息ProgrammingError: syntax error at or near "D" LINE 35: ,'%5D',']')) as ...

代码:

SELECT *,
REPLACE(LEFT(CONCAT(SUBSTRING(REGEXP_SUBSTR(t1.url, 'keywords=([a-zA-Z0-9]+[%+])*[a-zA-Z0-9]*') from 10), t1.extracted_search_value), 100),'%5C','\\') as parsed_search from new_table t1 
LIMIT 10

1 个答案:

答案 0 :(得分:1)

如果在python中使用以下SQL,它应该可以工作。我已经使用psycopg2

对其进行了测试

基本上,您的SQL中有两个反斜杠,而Postgres文档中有

如果需要在文字上加上反斜杠,请使用\\

我已将您代码中的\\替换为\\\\

SELECT *,
REPLACE(LEFT(CONCAT(SUBSTRING(REGEXP_SUBSTR(t1.url, 'keywords=([a-zA-Z0-9]+[%+])*[a-zA-Z0-9]*') from 10), 
t1.extracted_search_value), 100),'%5C','\\\\') as parsed_search from new_table t1 
LIMIT 10

有关更多说明,请参见第9.7.3节。以下链接上的POSIX正则表达式 https://www.postgresql.org/docs/current/functions-matching.html#FUNCTIONS-LIKE

请告诉我这是否可以解决您的问题。