SQL Server中电子邮件的通配符
这是表中的示例电子邮件数据SQL Server中电子邮件的通配符,sql,sql-server,tsql,wildcard,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是否有一个通配符,可以删除那些无用的
2.3|[johnnyappleseed@example.com]
下面是我研究了一段时间的一个问题:
SELECT * FROM WS_TRANSACTION
WHERE SERVICE_ID = 'GETUSERTOKENLOGIN'
AND SERVICE_ID LIKE '%@%'
这应该做的是给我这个表中的数据,并使列service_id只包含电子邮件,比如johnnyappleseed电子邮件。SQL是否有一个通配符,可以删除那些无用的东西,这样它就只能描述电子邮件,还是我必须用另一种方式来处理
我试图用百分号来获取电子邮件,但我相信它会删除@前后的所有内容,这不是我想要的
如果字符串开头和结尾的字符长度始终相同,您可以使用LEFT和RIGHT函数,以及像这样的LEN函数,任何帮助都将非常有用
SELECT LEFT(RIGHT(SERVICE_ID,LEN(SERVICE_ID)-5),LEN(SERVICE_ID)-6)
如果字符串开头和结尾的字符长度始终相同,则可以使用LEFT和RIGHT函数,以及像这样的LEN函数
SELECT LEFT(RIGHT(SERVICE_ID,LEN(SERVICE_ID)-5),LEN(SERVICE_ID)-6)
我认为您可以使用子字符串来获取电子邮件,正如您所说,您的电子邮件包装在方括号“[]”中,因此使用子字符串()
我认为您可以使用子字符串来获取电子邮件,正如您所说,您的电子邮件包装在方括号“[]”中,因此请使用子字符串()
如果包含电子邮件的栏目会自动记录您所代表的数据,并且您只希望电子邮件部分使用:
replace(replace(SUBSTRING('2.3 | [johnnyappleseed@example.com]', (charindex( '[','2.3 | [johnnyappleseed@example.com]')), LEN('2.3 | [johnnyappleseed@example.com]')),'[',''),']','')
输出为
johnnyappleseed@example.com
如果包含电子邮件的列会自动记录您所代表的数据,并且您只希望电子邮件部分使用:
replace(replace(SUBSTRING('2.3 | [johnnyappleseed@example.com]', (charindex( '[','2.3 | [johnnyappleseed@example.com]')), LEN('2.3 | [johnnyappleseed@example.com]')),'[',''),']','')
输出为
johnnyappleseed@example.com
所以你只需要电子邮件中@之前的单词?不,我需要整个电子邮件。我不需要2.3的东西。对不起,我可以看出这有点误导你的数据库中有[]之间的电子邮件包装?这只是他们如何登录的,我猜在哪里只能找到一行。其中或通配符不修改任何内容。您需要将搜索与格式设置分开。Regex是提取这些信息的最好方法,Regex并没有内置到SQL中。所以你只需要电子邮件中@之前的单词?不,我需要整个电子邮件。我不需要2.3的东西。对不起,我可以看出这有点误导你的数据库中有[]之间的电子邮件包装?这只是他们如何登录的,我猜在哪里只能找到一行。其中或通配符不修改任何内容。您需要将搜索与格式设置分开。正则表达式是提取这些信息的最佳方法,而正则表达式并没有内置到SQL中。