Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中电子邮件的通配符_Sql_Sql Server_Tsql_Wildcard - Fatal编程技术网

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中。