我有一个名为original_filename的列,其中包含文本。在文本中有一个我想要提取的文件ID。描述以“error_rows_”开头,如下所示。但是文件ID的长度不一,即999到999999,后面是附加文本。
error_rows_90349_2014-04-10_00-00-00_Transaction-Login_TheHut.gpg
error_rows_904003_2014-04-10_12-00-00_Transaction-Login_TheHut.gpg
error_rows_90403_2014-04-10_12-00-00_Transaction-Registration_TheHut.gpg
error_rows_9060_2014-04-11_00-00-00_Transaction-Login_TheHut.gpg
有人可以帮助我使用sql来解压缩它。最终结果应该是:
90349 904003 90403 9060
我一直试图使用charindex成功
答案 0 :(得分:3)
试试这个:
DECLARE @Test TABLE (TestData VARCHAR(500));
INSERT INTO @Test SELECT 'error_rows_90349_2014-04-10_00-00-00_Transaction-Login_TheHut.gpg';
INSERT INTO @Test SELECT 'error_rows_904003_2014-04-10_12-00-00_Transaction-Login_TheHut.gpg';
INSERT INTO @Test SELECT 'error_rows_90403_2014-04-10_12-00-00_Transaction-Registration_TheHut.gpg';
INSERT INTO @Test SELECT 'error_rows_9060_2014-04-11_00-00-00_Transaction-Login_TheHut.gpg';
SELECT
*,
CONVERT(INT, SUBSTRING(TestData, 12, CHARINDEX('_', TestData, 12) - 12))
FROM
@Test;
结果:
90349
904003
90403
9060