因此,我的表LOCMEMBERS中有一个LOCMEMBERS字段。一些电子邮件地址开始一个10位数的电话号码,我正在尝试识别那些。因此,我正在寻找一种方法来标记5556667777@vtext.com,而不是10JamesDean@vtext.com。
这是一个Oracle DB。
我尝试了以下操作,但是SUBSTRING抛出了一个错误“无效标识符”:
SELECT SUBSTRING(CAST(EMAILADDRESS AS VARCHAR(20)), 1, 10),
FROM LOCMEMBERS发布于 2016-07-26 15:06:42
尝尝这个
WITH
locmembers(member_id, email_address) AS
(SELECT 1,'12345@rrr.com' FROM dual UNION ALL --numbers but < 10 digits
SELECT 2,'1122334455@rrr.com' FROM dual UNION ALL --numbers = 10 digits
SELECT 3,'112233445566@rrr.com' FROM dual UNION ALL --numbers > 10 digits
SELECT 4,'emailaddress@rrr.com' FROM dual UNION ALL
SELECT 5,'emailsaddress1122334455@rrr.com' FROM dual --email address with 10 digits
)
SELECT
member_id
,email_address
,SUBSTR(REGEXP_REPLACE(email_address, '^[[:digit:]]{10}' ),1,1)
FROM
locmembers
WHERE SUBSTR(REGEXP_REPLACE(email_address, '^[[:digit:]]{10}' ),1,1) = '@'
;https://stackoverflow.com/questions/38593195
复制相似问题