【发布时间】:2021-08-24 13:05:23
【问题描述】:
我需要有关 sql 查询的帮助。我有一个带有列的表,其中将 xml 存储为 nvarchar。
| XmlCurves |
|---|
<?xml version="1.0" encoding="Windows-1252"?> |
所有的 XML 看起来像:
<?xml version="1.0" encoding="Windows-1252"?>
<Curve xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Anchor>Begin</Anchor>
<LoadOnlyNOKCurves>false</LoadOnlyNOKCurves>
<Teachmode>false</Teachmode>
<ActualCurve>
<FloatPoints>0;4.965425|0.01004791;5.438642|0.01076508;5.50529|0.01112366;5.485298</FloatPoints>
</ActualCurve>
<AbsOffset>
<X>88.21842</X>
<Y>0</Y>
</AbsOffset>
<UpperLimit>
<FloatPoints>9.456265E-05;5.023251|0.008893617;5.502031</FloatPoints>
</UpperLimit>
<LowerLimit>
<FloatPoints>0.0008510638;4.906321|0.01408511;5.495711</FloatPoints>
</LowerLimit>
<ULViolationCurveIdx>-1</ULViolationCurveIdx>
<ULViolationULIdx>-1</ULViolationULIdx>
<LLViolationCurveIdx>-1</LLViolationCurveIdx>
<LLViolationLLIdx>-1</LLViolationLLIdx>
<SIO_X>
<Id>1</Id>
<Alias>Position</Alias>
<Unit>mm</Unit>
</SIO_X>
<SIO_Y>
<Id>2</Id>
<Alias>Force</Alias>
<Unit>kN</Unit>
</SIO_Y>
</Curve>
我需要构建 SQL 查询,它在第一个标签 FloatPoints 中选择数据:<FloatPoints>0;4.965425|0.01004791;5.438642|0.01076508;5.50529|0.01112366;5.485298</Floatpoint>
解释:
<FloatPoints>x1;y1|x2;y2|x3;y3|x4;y4</FloatPoints>
因此,我想要这样的结果:
| x1 | y1 | x2 | y2 | x3 | y3 | x4 | y4 |
|---|---|---|---|---|---|---|---|
| 0 | 4.965425 | 0.01004791 | 5.438642 | 0.01076508 | 5.50529 | 0.01112366 | 5.485298 |
如果可能的话。
【问题讨论】:
-
“在哪里存储 xml 作为 nvarchar。” 当有
xml数据类型时,为什么要将 XML 存储在nvarchar中。 -
另外,您真的只想要 8 列,其中包含
varchar值'number'吗?如果是这样,我不明白你为什么需要阅读 XML 这样做,你可以这样做SELECT 'number' AS x1, 'number' AS y1, ..., 'number' AS x4, 'number' AS y4; -
@Larnu 这是由于该数据来自生成数据的软件。不幸的是,我无法影响此属性。最大使用集成服务,但是解析还是会有问题。我需要给定标记(FloatPoints)中该列(XmlCurves)的给定值。我不在乎哪条路。但是这些值只存储在此列中,即 XML。但它被保留为 nvarchar :-( 我需要给定标记 (FloatPoints) 中该列 (XmlCurves) 中的给定值。我不在乎哪种方式。
-
那么您的实际预期结果是什么?
-
@Charlieface db<>fiddle
标签: sql sql-server xml