我是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"
答案 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结果,所以'@'不会显示在你的返回值中。