在 MS SQL Server 2012 中,我有一个数据库,其中包含一个包含 varchar 列的表,该列包含一些甚至可能包含换行符的文本。
基本示例:
CREATE TABLE Example
(
[ID] INT
, [Text] VARCHAR(100)
);
INSERT INTO Example ([ID], [Text])
VALUES
(1, 'This is a test'),
(2, 'This is another
test with
two line breaks'),
(3, 'This is a test
with one line break');
现在我想获得每条记录的总文本行数,即这样的:
--------------------
| ID | LinesOfText |
--------------------
| 1 | 1 |
--------------------
| 2 | 3 |
--------------------
| 3 | 2 |
--------------------
不幸的是,似乎没有这样的内置函数。我的想法是计算Chr(10)+Chr(13)
出现次数并在最后添加 1。但CHARINDEX
只找到字符串中的第一次出现。
知道如何解决这个问题吗?
可能有用的额外信息:为了更深入地了解我的数据,“文本”来自包含换行符的 XML 字符串,例如
...
<a>This is
another test
with two line breaks</a>
...
我使用CROSS APPLY XML.nodes(...
XPath 来查找<a>
XML 中的所有节点。这可以用 T-SQL XML 函数直接解决吗?