W MS SQL Server 2012 mam bazę danych z tabelą zawierającą kolumnę varchar zawierającą tekst, który może zawierać nawet podziały wierszy.Uzyskaj liczbę wierszy dla określonego varcharu w MS SQL
Podstawowe przykład:
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');
Teraz chcę uzyskać całkowitą linii tekstu dla każdego rekordu, czyli mniej więcej tak:
--------------------
| ID | LinesOfText |
--------------------
| 1 | 1 |
--------------------
| 2 | 3 |
--------------------
| 3 | 2 |
--------------------
Niestety, nie wydaje się być wbudowane funkcje dla czegoś takiego. Mój pomysł polegał na liczeniu wystąpień Chr(10)+Chr(13)
i dodaniu 1 na końcu. Ale CHARINDEX
znajduje tylko pierwsze wystąpienie w ciągu znaków.
Każdy pomysł, jak rozwiązać ten problem?
Dodatkowe informacje, które mogą być przydatne: Aby uzyskać głębszy wgląd w moje dane, "Tekst" pochodzi z łańcucha XML zawierającego podziały wierszy, np.
...
<a>This is
another test
with two line breaks</a>
...
używam CROSS APPLY XML.nodes(...
i XPath, aby znaleźć wszystkie <a>
węzły w XML. Czy można to rozwiązać bezpośrednio za pomocą funkcji T-SQL XML?
Dzięki, już zmienił. Skopiowałem go z sqlfiddle.com, ale nie wiedziałem, że jestem w trybie MySQL – Markus