1

我有一个名为 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 没有成功

4

1 回答 1

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
于 2015-04-02T13:21:35.027 回答