【发布时间】:2017-07-28 08:42:31
【问题描述】:
我正在做一个从字符串中提取特定数据元素的小项目。字符串示例:
ABC:123-456-789-1234 description end 1/1/2015
我要提取的部分是123-456-789-1234。现在我有以下 SQL 来选择该数据元素:
SELECT substring(data, charindex('ABC',data)+4,16) FROM Table X
问题是字符串变化很大。例如,以下是字符串的提供方式:
ABC: 123-456-789-1234 description end 1/1/2015
ABC: 123-456-789-1234 da1234
ABC: 123-456-789-1234 random1234-12 1/1/2015
ABC: 123-456-789-1234,-ing end 1/1/2015
ABC 123-456-789-1234 description end
有没有更好的方法来捕获我想要的确切数据元素?我无法将值硬编码到子字符串中。
编辑:应该澄清字符串在所有实例中都不相同(即单词描述或日期是可选的)
编辑:找到答案。需要替换所有内容并提取相关信息。
SELECT substring(replace(replace(replace(data,' ',''),'-',''),':',''), charindex('ABC',replace(replace(replace(data,' ',''),'-',''),':',''))+3,13)
【问题讨论】:
-
我不是很好,但也许使用正则表达式
标签: sql sql-server string tsql