如何在SQL中排除@之后的所有内容?

时间:2015-03-30 19:34:31

标签: sql oracle

我是sql的新手,我正在编写一个sql脚本来选择数据,结果将以.csv格式显示。对于其中一个字段,我需要在列表中的每个人的电子邮件地址中仅选择@之前的内容。我不想更新表格中的记录。

Ex:john.doe@yahoo.com

我只需要选择john.doe

我这样做需要帮助。我在Linux环境中使用sqlplus。

现在这是我作为脚本的一部分。我仍然需要帮助来获得所需的输出。

(选择nvl(c.email_email_address,'')

    from email c, person a
    where c.email_pidm = a.person_pidm and
          PERSON.ID = a.person_id and
          c.email_emal_code = 'EMPL' and
          c.email_status_ind = 'A' and
          c.rowid = (select max(b.rowid)
                                   from email b
                                   where b.email_pidm = a.person_pidm and
                                         b.email_emal_code = 'EMP'
                                   and b.email_status_ind = 'A')
                                                                    ) "Employee_Email_Address",
SELECT SUBSTR(email_email_address, 0, INSTR(email_email_address, '@')-1) 
--(select nvl(c.email_email_address, ' ')
        from email c, person a
        where c.email_pidm = a.person_pidm and
              PERSON.ID = a.person_id and
              c.email_emal_code = 'EMP' and
              c.email_status_ind = 'A' and
              c.rowid = (select max(b.rowid)
                                       from email b
                                       where b.email_pidm = a.person_pidm and
                                             b.email_emal_code = 'EMPL'
                                       and b.email_status_ind = 'A')
                                                                        ) "Username"

3 个答案:

答案 0 :(得分:0)

SELECT SUBSTR('test@example.com', 1, INSTR('test@example.com', '@')-1) FROM DUAL;

输出:

  

测试

答案 1 :(得分:0)

你可以这样做:

select SUBSTR("test@testdomain.com", 1, INSTR("test@testdomain.com", "@")-1)
from dual

答案 2 :(得分:0)

SELECT SUBSTR(FIELD_NAME, 0, INSTR(FIELD_NAME, '@')-1) FROM TABLE_NAME

SUBSTR的工作原理如下:

SUBSTR( string, start_position, [ length ] )

长度参数是...... INSTR(FIELD_NAME, '@')-1 ...正在为你准备的。

INSTR会告诉您在字符串(或字段)中您正在查找或找到的字符的位置。你必须得-1结果,所以'@'不会显示在你的返回值中。