gpt4 book ai didi

sql - 使用 Regex 约束时的 PostgreSQL "invalid regular expression: invalid escape\sequence"

转载 作者:行者123 更新时间:2023-12-04 13:15:11 25 4
gpt4 key购买 nike

这是我的 SQL 代码:

CREATE TABLE country (
id serial NOT NULL PRIMARY KEY,
name varchar(100) NOT NULL CHECK(name ~ '^[-\p{L} ]{2,100}$'),
code varchar(3) NOT NULL
);

请注意 name 属性中的 regex 约束。上面的代码将导致 ERROR: invalid regular expression: invalid escape\sequence

我尝试使用 escape CHECK(name ~ E'^[-\\p{L} ]{2,100}$') 但再次导致 ERROR: invalid regular expression: invalid转义\序列

我也知道如果我执行 CHECK(name ~ '^[-\\p{L} ]{2,100}$'),CHECK(name ~ E' ^[-\p{L} ]{2,100}$'), - SQL 将接收到错误的正则表达式,因此在插入有效数据时将引发约束冲突。

PostgreSQL 正则表达式约束是否不支持正则表达式模式 (\p) 或类似的东西?


编辑#1

正则表达式 ^[-\p{L} ]{2,100}$ 基本上允许国家名称在 2-100 个字符之间,允许的字符是连字符、空格和所有字母(包括拉丁字母)。

注意:SQL 在创建表期间运行良好,但在插入有效数据时会抛出错误。

附加说明:我使用的是 PostgreSQL 12.1

最佳答案

\p{L} Unicode类别(属性)类匹配任意字母,但在PostgreSQL regex中不支持.

使用 [:alpha:] POSIX 字符类可能会得到相同的行为

'^[-[:alpha:] ]{2,100}$'

关于sql - 使用 Regex 约束时的 PostgreSQL "invalid regular expression: invalid escape\sequence",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61204865/

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