sql charindex从字符串中提取数字

时间:2015-04-02 13:08:56

标签: sql charindex

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

1 个答案:

答案 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