不能在 Postgres 中小写反向引用字符串
Cannot lowercase backreferenced string in Postgres
我正在尝试将反向引用的字符串小写,但它不起作用。 :( 我只想降低 root 之后的第一个字符。
my_string = "<root>Here is July's best food</root>"
正确的应该是:
my_string = "<root>here is July's best food</root>"
这是我的查询:
UPDATE my_table
SET my_string = regexp_replace(my_string, '<root>(.)', lower(E'<root>\1'))
WHERE my_id = 1;
使用 split_part()
和 lower()
select '<root>'||lower(split_part(split_part('<root>Here is July''s best food</root>',' ',1),'>',2)) || split_part('<root>Here is July''s best food</root>',split_part(split_part('<root>Here is July''s best food</root>',' ',1),'>',2),2)
结果:
"<root>here is July's best food</root>"
UPDATE my_table
SET my_string = '<root>'||lower(split_part(split_part(my_string,' ',1),'>',2)) || split_part(my_string,split_part(split_part(my_string,' ',1),'>',2),2)
WHERE my_id = 1;
以下功能可选
你可以做如下的功能
create or replace function lower_first_word(txt text,del text) returns text as
$$
select del||lower(split_part(split_part(txt ,' ',1),'>',2)) || split_part(txt ,split_part(split_part(txt ,' ',1),'>',2),2)
$$
language sql
并更新
UPDATE my_table
SET my_string = lower_first_word('<root>Here is July''s best food</root>','<root>')
WHERE my_id = 1;
或
使用 regex
和 substring()
select lower(substring('<root>Here is July''s best food</root>',E'[A-Za-z<>]+'))||substring('<root>Here is July''s best food</root>',E'[^ ]* (.*)')
更新语句为
UPDATE my_table
SET my_string = lower(substring('<root>Here is July''s best food</root>', E '[A-Za-z<>]+')) || substring('<root>Here is July''s best food</root>', E '[^ ]* (.*)')
WHERE my_id = 1;
我正在尝试将反向引用的字符串小写,但它不起作用。 :( 我只想降低 root 之后的第一个字符。
my_string = "<root>Here is July's best food</root>"
正确的应该是:
my_string = "<root>here is July's best food</root>"
这是我的查询:
UPDATE my_table
SET my_string = regexp_replace(my_string, '<root>(.)', lower(E'<root>\1'))
WHERE my_id = 1;
使用 split_part()
和 lower()
select '<root>'||lower(split_part(split_part('<root>Here is July''s best food</root>',' ',1),'>',2)) || split_part('<root>Here is July''s best food</root>',split_part(split_part('<root>Here is July''s best food</root>',' ',1),'>',2),2)
结果:
"<root>here is July's best food</root>"
UPDATE my_table
SET my_string = '<root>'||lower(split_part(split_part(my_string,' ',1),'>',2)) || split_part(my_string,split_part(split_part(my_string,' ',1),'>',2),2)
WHERE my_id = 1;
以下功能可选
你可以做如下的功能
create or replace function lower_first_word(txt text,del text) returns text as
$$
select del||lower(split_part(split_part(txt ,' ',1),'>',2)) || split_part(txt ,split_part(split_part(txt ,' ',1),'>',2),2)
$$
language sql
并更新
UPDATE my_table
SET my_string = lower_first_word('<root>Here is July''s best food</root>','<root>')
WHERE my_id = 1;
或
使用 regex
和 substring()
select lower(substring('<root>Here is July''s best food</root>',E'[A-Za-z<>]+'))||substring('<root>Here is July''s best food</root>',E'[^ ]* (.*)')
更新语句为
UPDATE my_table
SET my_string = lower(substring('<root>Here is July''s best food</root>', E '[A-Za-z<>]+')) || substring('<root>Here is July''s best food</root>', E '[^ ]* (.*)')
WHERE my_id = 1;