gpt4 book ai didi

regex - Django 。 PostgreSQL。 regexp_split_to_table 不工作

转载 作者:行者123 更新时间:2023-11-29 11:42:01 28 4
gpt4 key购买 nike

我正在尝试使用查询标记我的表字段。

SELECT regexp_split_to_table(mytable.field_name, E'\\s+') from mytable limit 20;

当我从 psql shell 执行它时这有效但是当我这样做时:

from django.db import connection cursor=connection.cursor() 
cursor.execute("SELECT regexp_split_to_table(mytable.field_name,E'\\s+')
FROM mytable LIMIT 20")
cursor.fetchall()

...它无法返回 token 。我做错了什么?

最佳答案

Django 将反斜杠视为元字符,并在双引号内进行解释。因此,在字符串到达​​ PostgreSQL 服务器之前,一层 E'\\s+') 被剥离,它将看到 E'\\s+')。转义字符串将导致 's+',这反过来将使 regexp_split_to_table() 在任意数量的 s 处拆分您的字符串,而不是非打印空间,字符类简写 \s 在正则表达式中代表。

将字符串中的反斜杠加倍以获得您想要的内容:E'\\\\s+'):

"SELECT regexp_split_to_table(field_name, E'\\\\s+') FROM mytable LIMIT 20"

作为替代方案,为了避免反斜杠 \ 的特殊含义出现问题,您可以使用 [[:space:]] 来表示相同的字符类:

"SELECT regexp_split_to_table(field_name, '[[:space:]]+') FROM mytable LIMIT 20"

详见章节"Pattern Matching" in the manual .

关于regex - Django 。 PostgreSQL。 regexp_split_to_table 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8907041/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com