Trong MS SQL Server 2012 tôi có một cơ sở dữ liệu với một bảng chứa một cột VARCHAR chứa một số văn bản mà thậm chí có thể bao gồm ngắt dòng.Lấy số dòng cho varchar cụ thể trong MS SQL
dụ cơ bản:
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');
Bây giờ tôi muốn nhận được tổng số dòng văn bản cho mỗi bản ghi, tức là một cái gì đó như thế này:
--------------------
| ID | LinesOfText |
--------------------
| 1 | 1 |
--------------------
| 2 | 3 |
--------------------
| 3 | 2 |
--------------------
Thật không may, dường như không có một hàm tích hợp cho một cái gì đó như thế này. Ý tưởng của tôi là đếm số Chr(10)+Chr(13)
lần xuất hiện và thêm 1 vào cuối. Nhưng CHARINDEX
chỉ tìm thấy lần xuất hiện đầu tiên trong chuỗi.
Bất kỳ ý tưởng nào về cách giải quyết vấn đề này?
Thông tin bổ sung có thể hữu ích: Để cung cấp thông tin chi tiết hơn về dữ liệu của tôi, "Văn bản" đến từ chuỗi XML có ngắt dòng, ví dụ:
...
<a>This is
another test
with two line breaks</a>
...
tôi sử dụng CROSS APPLY XML.nodes(...
và XPath để tìm tất cả <a>
nút trong XML. Điều này có thể được giải quyết trực tiếp với các hàm XML của T-SQL không?
Cảm ơn, đã thay đổi nó. Tôi đã sao chép nó từ sqlfiddle.com nhưng không biết tôi đang ở chế độ MySQL – Markus