我有电子邮件记录,其中包括'nr'之类的字符和像exclenr@example.comnr122342之类的字符,这是第一个NR,但是在.com之后,我想摆脱此" NR122342"部分。我想使用SQL查询来摆脱此问题,以获取原始的电子邮件地址。请建议使用适当的SQL命令。
您可以使用LEFT
和CHARINDEX
; CHARINDEX
函数返回您正在寻找的表达式的位置,在您的情况下," nr"。
declare @txt as varchar(50) = 'example@example.comnr122342'
select LEFT(@txt, CHARINDEX('nr', @txt, 1)-1)
使用STUFF
和CHARINDEX
,这是可能的:
SEELCT STUFF(Email, CHARINDEX('.com', Email, 1) + LEN('.com'), LEN(Email), '') AS Email
FROM TableName
您可以尝试如下:
CREATE FUNCTION dbo.StringBeforeLastIndex(@source nvarchar(80), @pattern char)
RETURNS nvarchar(80)
BEGIN
DECLARE @lastIndex int
SET @lastIndex = (LEN(@source)) - CHARINDEX(@pattern, REVERSE(@source))
RETURN SUBSTRING(@source, 0, @lastindex + 1)
END;
GO
您可以使用regexp_extract
函数提取字符串中的所有内容( nr
,后跟一个数字(
WITH data(x) AS (VALUES 'examplenr@example.comnr122342')
SELECT regexp_extract(x, '(.+)nrd+$', 1)
FROM data
生产:
_col0
-----------------------
examplenr@example.com
(1 row)