使用T-SQL提取两个字符之间的数据



我没有写入数据库的权限,查询仅限于检索。不允许CTE。无法写入函数。(这是一份关于我所受限制的文件https://help.salesforce.com/articleView?id=mc_as_sql_reference.htm&类型=5(

下面是一个我正在使用的字符串的例子,我希望提取电子邮件地址,我一直知道电子邮件将从第四个|开始,到第五个|结束。

D||John Smith|EML|test@gmail.com|Y|2014/01/03 17:14:01.000000| 

这是我迄今为止尝试的,它无法为我返回任何电子邮件地址

SELECT 
CASE
WHEN CHARINDEX('|',AllData) > 0 
THEN SUBSTRING(AllData, CHARINDEX('|', AllData, 22) + 1, ABS((CHARINDEX('|', AllData, CHARINDEX('@', AllData))) - (CHARINDEX('|', AllData, 22) + 1)))
ELSE 'NotWorking'
END AS email
FROM
[test_file]

我建议string_split():

select s.value
from test_file tf cross apply
string_split(alldata, '|') s
where s.value like '%@%.%';

这不会提取第四个值。它提取任何看起来像电子邮件的值,但它是非常简单的代码,应该可以工作。

最新更新