6

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 関数で直接解決できますか?

4

4 に答える 4

8

Replace何も置き換えずに改行を削除するために使用します ( '')。次に、元のテキストから変更されたテキストの長さを差し引くことができます。

于 2013-06-12T11:01:40.850 に答える