sql charindex 从字符串中提取数字
sql charindex extract number from string
我有一个名为 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 但没有成功
试试这个:
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
我有一个名为 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 但没有成功
试试这个:
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