这是表格中的示例电子邮件数据
2.3|[johnnyappleseed@example.com]
以下是我一直在研究的查询:
SELECT * FROM WS_TRANSACTION
WHERE SERVICE_ID = 'GETUSERTOKENLOGIN'
AND SERVICE_ID LIKE '%@%'
这应该做的是给我这个表中的数据,并使列service_id只包含电子邮件,如johnnyappleseed电子邮件。是否有一个外卡用于SQL,它将删除那些无用的东西,以便它只描绘电子邮件,或者我是否必须以不同的方式解决这个问题?
我尝试使用百分号来获取电子邮件,但我相信它会删除@之前和之后的所有内容,这不是我想要的。
任何帮助都会非常感激
答案 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);
答案 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