0

I have a column of Emails. In that column there are email addresses which end with some digits. I want to remove those trailing digits.

Example:

jjj@yahoo.com234
lhf@hotmail.com1984
lll@gmail.com567

Result:

jjj@yahoo.com
lhf@hotmail.com
lll@gmail.com

Thank you very much.

bizimunda
  • 819
  • 2
  • 9
  • 26

2 Answers2

0

Check below :

DECLARE @DATA VARCHAR(32)

SET @DATA = 'jjj1@yahoo.com234'

SELECT REPLACE(@DATA, SUBSTRING(SUBSTRING(@DATA, CHARINDEX('@', @DATA) + 1, LEN(@DATA)), PATINDEX('%[0-9]%', SUBSTRING(@DATA, CHARINDEX('@', @DATA) + 1, LEN(@DATA))), LEN(SUBSTRING(@DATA, CHARINDEX('@', @DATA) + 1, LEN(@DATA)))), '') AS DATA

+================+
| DATA           |
+================+
| jjj1@yahoo.com |
+----------------+

Update query :

UPDATE dbo.Email
  SET
      Email = REPLACE(Email, SUBSTRING(SUBSTRING(Email, CHARINDEX('@', Email)+1, LEN(Email)), PATINDEX('%[0-9]%', SUBSTRING(Email, CHARINDEX('@', Email)+1, LEN(Email))), LEN(SUBSTRING(Email, CHARINDEX('@', Email)+1, LEN(Email)))), ''); 
Yogesh Sharma
  • 49,870
  • 5
  • 26
  • 52
0

You can try this solution, I used this many times.

Create a function from given code.

  SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO
  CREATE FUNCTION [dbo].[RemoveSpecialChars] (@s VARCHAR(2000)) RETURNS VARCHAR(2000)
     WITH SCHEMABINDING
  BEGIN
     IF @s IS NULL
        RETURN NULL
     DECLARE @s2 VARCHAR(256)
     SET @s2 = ''
     DECLARE @l INT
     SET @l = LEN(@s)
     DECLARE @p int
     SET @p = 1
     WHILE @p <= @l BEGIN
        DECLARE @c INT
        SET @c = ASCII(SUBSTRING(@s, @p, 1))
        IF @c BETWEEN 65 AND 90 OR @c BETWEEN 97 AND 122 OR @c = 64 OR @c = 46
           SET @s2 = @s2 + CHAR(@c)
        SET @p = @p + 1
        END
     IF LEN(@s2) = 0
        RETURN NULL
     RETURN @s2
  END

Then you can use this function given below query

    UPDATE [dbo].[Email]
    SET Email = AA.Email    
    FROM [dbo].[Email] AEL
    CROSS APPLY
    (SELECT TOP 1 [dbo].[RemoveSpecialChars](Email)AS Email FROM [dbo].[Email] at WHERE at.Email=AEL.Email) AA
Manoj Pilania
  • 664
  • 1
  • 7
  • 18