Do Not REGREPLACE STRING_AGG Where长度小于

xzv2uavs  于 2022-09-21  发布在  PostgreSQL
关注(0)|答案(1)|浏览(156)

我正在循环通过一张表,XXXXX列出了名字和姓氏。

下面的代码可以工作,但当使用首字母时,显然会出现严重错误。我可以把名字和姓氏分开,并使用一个长度子句。

但我想知道,如果名字和姓氏的长度不到两个,是否有必要忽略它们?

create table reg_test(id integer, note_text text)

insert into reg_test values (1,'sjdfhsdjh sdfsdf ksdfksf John dsfsfgsdfhj Smith dsfsfsdf');

update reg_test
SET note_text = regexp_replace(note_text, 'J|Smith' , 'XXXXX', 'ig')
where id = 1;
9lowa7mx

9lowa7mx1#

在正则表达式中,您可以强制使用一系列字符。例如,如果坚持字符串长度在3到5个字符之间,则可以使用{3,5}。下限和上限都是可选的。

在下面的示例中,要消除“JS”等2个字符的首字母,可以使用J[A-Z]{2,}(J后面跟2个或更多字母),这意味着它必须至少是3个字母。

insert into reg_test values
(3,'sjdfhsdjh JS sdfsdf ksdfksf John dsfsfgsdfhj Smith dsfsfsdf');

更新正则表达式:

update reg_test
SET note_text = regexp_replace(note_text, 'J[A-Z]{2,}|Smith' , 'XXXXX', 'ig')
where id = 3

你会看到它更新了“John”,而不是“JS”。

相关问题