【问题标题】:Extracting Data between two characters with T-SQL [duplicate]使用 T-SQL 在两个字符之间提取数据 [重复]
【发布时间】:2021-02-21 14:41:43
【问题描述】:

我无权写入数据库,查询仅限于检索。不允许使用 CTE。不能写函数。 (这是我限制在https://help.salesforce.com/articleView?id=mc_as_sql_reference.htm&type=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]

【问题讨论】:

  • 你可能会在Salesforce.SE的土地上做得更好,例如正在搜索SQL split
  • 在 Salesforce 世界中没有成功,希望看看这个,看看我是否可以得到建议

标签: sql-server tsql


【解决方案1】:

我建议string_split():

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

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

【讨论】:

  • String_Split 不是我可以使用的函数,很遗憾
猜你喜欢
  • 2020-11-05
  • 2020-11-13
  • 2020-01-29
  • 1970-01-01
  • 2021-01-20
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多