有人能理解为什么当使用完全相同的 POSITION 时 LEFT 语法会得出与 RIGHT 语法不同的结果吗?即使在右侧结果列中,几乎每个条目都不同,这是为什么?
我附上了一张我所做的事情的照片。引用的专栏充满了电子邮件。我使用的位置是“@”。使用 LEFT 语法,我想提取人名,使用 RIGHT,我想提取电子邮件地址的剩余部分。
我是新手,正在使用 postgres SQL 尝试学习,我使用的信息仅用于学习目的。
提前谢谢大家!!!
根据 Postgres 文档,
- 返回字符串中的最后 n 个字符。 当 n 为负数时,返回除第一个之外的所有 |n|角色。right(str text, n int)
- 返回字符串中的前 n 个字符。 当 n 为负数时,返回除最后一个 |n| 之外的所有内容角色。left(str text, n int)
提取:
第一部分(前n个字符减去“@”字符):
POSITION('@' IN email_id) - 1
第二部分(最后n个字符的长度):
LENGTH(email_id) - POSITION('@' IN email_id)
SELECT
email_id,
LEFT(email_id, POSITION('@' IN email_id) - 1) AS username,
RIGHT(email_id, LENGTH(email_id) - POSITION('@' IN email_id)) AS domain
FROM your_table;