2201B错误:无效的正则表达式中使用替换()函数时
问题描述:
为什么Postgres的给了我这个错误2201B错误:无效的正则表达式中使用替换()函数时
当我使用SQL语句[2014-10-30 13:43:36] [2201B] ERROR: invalid regular expression: invalid escape \ sequence Where: PL/pgSQL function normalize_username() line 5 at assignment
:
UPDATE users."user" SET username = username
具有以下触发激活:
CREATE OR REPLACE FUNCTION normalize_username()
RETURNS TRIGGER AS $normalize_username$
BEGIN
IF NOT (NEW.username IS NULL)
THEN
NEW.username := replace(NEW.username, 'ё', 'е');
END IF;
RETURN NEW;
END;
$normalize_username$ LANGUAGE plpgsql;
表的创建过程如下:
CREATE TABLE USERS.user (
user_id SERIAL PRIMARY KEY,
username CITEXT,
)
replace()是一个简单的文本函数,对不对?它不应该与我想的正则表达式有任何关系。
答
的问题是解决了这样的分配铸造用户名TEXT:
CREATE OR REPLACE FUNCTION normalize_username()
RETURNS TRIGGER AS $normalize_username$
BEGIN
IF NOT (NEW.username IS NULL)
THEN
NEW.username := replace(NEW.username::TEXT, 'ё', 'е');
END IF;
RETURN NEW;
END;
$normalize_username$ LANGUAGE plpgsql;
它看起来像CITEXT列操作引擎盖下静静地转化为正则表达式运算。有人能证实这一点吗?