*SQL 新功能* RIGHT 和 LEFT 函数不会根据相同的 POSITION 提取相同的反射结果

问题描述 投票:0回答:1

Picture of what i tried with results 有人能理解为什么当使用完全相同的 POSITION 时 LEFT 语法会得出与 RIGHT 语法不同的结果吗?即使在右侧结果列中,几乎每个条目都不同,这是为什么?

我附上了一张我所做的事情的照片。引用的专栏充满了电子邮件。我使用的位置是“@”。使用 LEFT 语法,我想提取人名,使用 RIGHT,我想提取电子邮件地址的剩余部分。

我是新手,正在使用 postgres SQL 尝试学习,我使用的信息仅用于学习目的。

提前谢谢大家!!!

postgresql position
1个回答
0
投票

根据 Postgres 文档

right(str text, n int)
- 返回字符串中的最后 n 个字符。 当 n 为负数时,返回除第一个之外的所有 |n|角色。

left(str text, n int)
- 返回字符串中的前 n 个字符。 当 n 为负数时,返回除最后一个 |n| 之外的所有内容角色。

提取:

第一部分(前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;
© www.soinside.com 2019 - 2024. All rights reserved.