postgresql * SQL* RIGHT和LEFT函数不基于相同的POSITION提取相同的反射结果

2uluyalo  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(153)

Picture of what i tried with results有没有人能解释一下,当使用相同的POSITION时,为什么LEFT语法和RIGHT语法会得到不同的结果?即使在RIGHT结果列中,几乎每个条目都是不同的,为什么会这样?
我附上了我所做的事情的图片。引用的列充满了电子邮件。我使用的位置是'@'。与左语法,我想拉的人的名字和与右我想拉的电子邮件地址的左边。
我是新来的,使用postgres SQL试图学习,我使用的信息只是为了学习目的。
提前感谢大家!

d7v8vwbk

d7v8vwbk1#

根据Postgres docs
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;

字符串

相关问题