SQL Server中的电子邮件通配符

时间:2015-07-17 16:49:45

标签: sql sql-server tsql wildcard

这是表格中的示例电子邮件数据

2.3|[johnnyappleseed@example.com]

以下是我一直在研究的查询:

SELECT * FROM WS_TRANSACTION
WHERE SERVICE_ID = 'GETUSERTOKENLOGIN' 
       AND SERVICE_ID LIKE '%@%'

这应该做的是给我这个表中的数据,并使列service_id只包含电子邮件,如johnnyappleseed电子邮件。是否有一个外卡用于SQL,它将删除那些无用的东西,以便它只描绘电子邮件,或者我是否必须以不同的方式解决这个问题?

我尝试使用百分号来获取电子邮件,但我相信它会删除@之前和之后的所有内容,这不是我想要的。

任何帮助都会非常感激

3 个答案:

答案 0 :(得分:4)

我认为您可以获取Substring来获取电子邮件,正如您所说的那样,您使用方括号' []'进行电子邮件换行,因此请使用SubString()

Declare @a varchar(max)
SET @a = '2.3|[johnnyappleseed@example.com]'
SELECT  SUBSTRING(@a,CharIndex('[',@a)+1,(CharIndex(']',@a)-CharIndex('[',@a))-1);

SEE DEMO

答案 1 :(得分:0)

如果字符串开头和结尾的字符长度始终相同,则可以使用LEFT和RIGHT函数以及LEN函数。

SELECT LEFT(RIGHT(SERVICE_ID,LEN(SERVICE_ID)-5),LEN(SERVICE_ID)-6)

答案 2 :(得分:0)

如果带有电子邮件的列会自动记录您所代表的数据,并且您只希望使用该电子邮件部分:

replace(replace(SUBSTRING('2.3 | [johnnyappleseed@example.com]', (charindex( '[','2.3 | [johnnyappleseed@example.com]')), LEN('2.3 | [johnnyappleseed@example.com]')),'[',''),']','')

输出

johnnyappleseed@example.com