在 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 函数解决吗?
最佳答案
使用 Replace
通过替换为空 (''
) 来消除换行符。然后您可以从原始文本中减去修改后的文本的长度。
关于sql - 获取 MS SQL 中特定 varchar 的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17063757/