我想做一些我认为使用 T-SQL//SQL Server 2008 R2 相当简单的事情,但我似乎想不出办法。
如果我使用 Java、C#、C++ 等语言,我会这样做:
- 查找字符串中第一次出现“123”的位置
- 从该位置执行子字符串操作,获取接下来的 50 个字符
所以,在 SQL Server 中,我基本上喜欢:
- 查找列 (X) 包含所述字符串的所有行(基本上是 LIKE 子句)
- 从所述字符串的位置开始从该列返回 50 个字符。
我能以某种方式做到这一点吗? 我可以将一个 XML 列强制转换为 nvarchar(max),进行类似操作,并进行子字符串操作,但我首先不知道如何获取所述字符串在列中的位置。
评论中要求的示例内容
CREATE TABLE SampleTable(xmlData xml);
如果 SampleTable 的 xmlData 列如下,则假装该值为 1。出于调试目的,我想从有趣的 unicodeÞ
字符中提取字符串向前 50 个字符(如果小于 50,则提取到文件末尾)。
<RootNode>
<Row>
<NestedNode1>
some text.
</NestedNode1>
<NestedNode2>
123456
</NestedNode2>
<NestedNode3>
Þ Some crazy name with unicode letters. Þ
</NestedNode3>
</Row>
</RootNode>