在字符串中拆分子字符串



我有电子邮件记录,其中包括'nr'之类的字符和像exclenr@example.comnr122342之类的字符,这是第一个NR,但是在.com之后,我想摆脱此" NR122342"部分。我想使用SQL查询来摆脱此问题,以获取原始的电子邮件地址。请建议使用适当的SQL命令。

您可以使用LEFTCHARINDEX; CHARINDEX函数返回您正在寻找的表达式的位置,在您的情况下," nr"。

declare @txt as varchar(50) = 'example@example.comnr122342'
select LEFT(@txt, CHARINDEX('nr', @txt, 1)-1)

使用STUFFCHARINDEX,这是可能的:

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)

相关内容

  • 没有找到相关文章

最新更新