如何从 regexp_match 获得第一场比赛?
How do I get the first match from regexp_match?
我想更新一个仅包含电子邮件地址域部分的列。
update
users
set
email_base_domain = regexp_match(email, '(\w+\.\w+)$')
不过,regexp_match
returns一个text[]
。如果电子邮件是 example@foo.com
,上面的设置 email_base_domain 到 {foo.com}
。我想要 foo.com
.
如何从 regexp_match
返回的 text[]
中获取第一个元素 text
?
添加一组括号以对要提取的内容进行分组。例如:
SELECT regexp_matches(email, '(\w+)\.\w+$')
FROM users
将return{foo}
,而
SELECT regexp_matches(email, '\w+\.(\w+)$')
FROM users
将 return '{com}'。
获得文本数组后,您可以使用常规数组索引从 returned 文本数组中提取值。例如:
SELECT (regexp_matches(email, '(\w+)\.\w+$'))[1]
FROM users
returns 'foo'
和
SELECT (regexp_matches(email, '\w+\.(\w+)$'))[1]
FROM users
returns 'com'
.
我想更新一个仅包含电子邮件地址域部分的列。
update
users
set
email_base_domain = regexp_match(email, '(\w+\.\w+)$')
不过,regexp_match
returns一个text[]
。如果电子邮件是 example@foo.com
,上面的设置 email_base_domain 到 {foo.com}
。我想要 foo.com
.
如何从 regexp_match
返回的 text[]
中获取第一个元素 text
?
添加一组括号以对要提取的内容进行分组。例如:
SELECT regexp_matches(email, '(\w+)\.\w+$')
FROM users
将return{foo}
,而
SELECT regexp_matches(email, '\w+\.(\w+)$')
FROM users
将 return '{com}'。
获得文本数组后,您可以使用常规数组索引从 returned 文本数组中提取值。例如:
SELECT (regexp_matches(email, '(\w+)\.\w+$'))[1]
FROM users
returns 'foo'
和
SELECT (regexp_matches(email, '\w+\.(\w+)$'))[1]
FROM users
returns 'com'
.