【问题标题】:Filter a record from a row from SQL Server table column从 SQL Server 表列的行中筛选记录
【发布时间】:2021-03-21 21:23:36
【问题描述】:

我有一个表,其中有一列包含如下数据:

<E><A>a</A><B>b</B><C>c</C></E>

我已经创建了一个新表,现在我需要将每个标签值插入到新表的单独列中。我对 SQL 很陌生,不知道如何执行此操作。

最后,数据应该是这样的:

Column names    A | B | C  
Row             a | b | c

您能否提供任何解决方案的指针?

提前谢谢你。

【问题讨论】:

    标签: sql sql-server database stored-procedures


    【解决方案1】:

    这样的事情可以帮助你:

    CREATE TABLE Table1
    (
        id int,
        xmlBody xml
    );
    
    INSERT INTO Table1 VALUES (1, '<E><A>a</A><B>b</B><C>c</C></E>');
    INSERT INTO Table1 VALUES (2, '<E><A>a1</A><B>b1</B><C>c1</C></E>');
    INSERT INTO Table1 VALUES (2, '<E><A>a2</A><B>b2</B><C>c2</C></E>');
    
    SELECT 
        xmlBody.value('(/E/A)[1]', 'varchar(20)') as A,
        xmlBody.value('(/E/B)[1]', 'varchar(20)') as B,
        xmlBody.value('(/E/C)[1]', 'varchar(20)') as C
    FROM Table1
    

    【讨论】:

    • 嗨,abc 这出现在 a 的一个列名下桌子。在这种情况下我应该使用什么。谢谢
    • 在我的答案中使用您的列名代替 xmlBody 列名。
    • 该列中的数据很长。每次都在 CAST 函数中使用整个数据会不会很好。基本上,如果我们让它动态化就好了。请提供任何帮助。谢谢
    • 如果数据是这样的格式,可能列类型已经是XML,如果不是,您可以使用语句CAST(yourColumn as xml)轻松转换。
    • 对不起。由于 SQL 新手,我无法理解您的陈述。如果可能的话,您能否在答案中显示出来,谢谢
    猜你喜欢
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    相关资源
    最近更新 更多