我尝试对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
答案 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
请告诉我这是否可以解决您的问题。