SQL- 需要字符串列中的数字



我有一张这样的表。

MES_id        MES_for_col
4717       4717 = ( 4711 + 4712 + 4713)/ 3
4729       4729 = ( 4723 + 4724 + 4725 + 4726)/4 
4788       4788 = ( 4780 + 4781 + 4782 + 4783 + 4784 + 4785 )/6 
4795       4795 = ( 4793 + 4794 ) / 2 

我需要一个查询,它将给出这样的输出(仅第 2 列中除号前的数字mes_for_col

column1    column2
4717         4711
4717         4712
4717         4713
4729         4723
4729         4724
4729         4725
4729         4726
4788         4780...

等等

我在这里使用patindex吗?有什么疑问可以建议吗?谢谢

Patindex 只接受 2 个参数。如果你想一步一步地搜索,使用 CHARINDEX 会更好,因为你可以给它一个起始位置。但是,您可以使用 XML 进行拆分。您需要过滤掉"="之前和"/"之后的文本,然后将所有您不想包含的字符替换为任何内容。

试试这个:

DECLARE @t table(MES_id int, MES_for_col varchar(max))
INSERT @t values
(4717, '4717 = ( 4711 + 4712 + 4713)/ 3'),
(4729, '4729 = ( 4723 + 4724 + 4725 + 4726)/4'),
(4788, '4788 = ( 4780 + 4781 + 4782 + 4783 + 4784 + 4785 )/6'),
(4795, '4795 = ( 4793 + 4794 ) / 2')
SELECT MES_id, t.c.value('.', 'VARCHAR(2000)') as column2
FROM (
    SELECT MES_id, x = CAST('<t>' + 
        REPLACE(REPLACE(REPLACE(REPLACE(STUFF(SUBSTRING(MES_for_col, 0,
        CHARINDEX('/', MES_for_col)), 1, CHARINDEX('=', MES_for_col), ''), 
        ' ', ''), ')', ''), '(', ''),  '+', '</t><t>') + '</t>' AS XML)
    FROM @t
) a
CROSS APPLY x.nodes('/t') t(c)

结果:

MES_id  column2
4717    4711
4717    4712
4717    4713
4729    4723
4729    4724
....

相关内容

  • 没有找到相关文章

最新更新