6

フィールドの 1 つをクリーンアップする必要があるテーブルがあります。基本的なテーブル構造は次のとおりです。

create table testComments(id int, comments text)

コメント列の一部の行には、多くの「キャリッジ リターン」(char(13)) と「ライン フィード」(char(10)) が必要でした。行ごとに複数のグループがある場合は、それを変更できる必要があります。私がこれまでに持っている基本的な選択ステートメントは次のとおりです。

  select count(id)
  from testComments
  where comments like('%' +  char(13) + char(10) + char(13) + char(10) + '%')

このクエリは結果を見つけます

"This is a entry in the testComments crlf
crlf
In the comments field that works"

ただし、コメントが次のようにリストされている場合、クエリは結果を見つけられません。

"This is an entry in the testComments crlf
crlf
crlf
That will not work"

クエリは、上記のデータに対して 1 エントリのカウントのみを返します。クエリを変更してカウント 2 を返す方法を教えてください。

4

3 に答える 3

0

仮想テーブルを使用してみてください。探している文字を空の文字列に置き換えた後、コメント フィールドとコメント フィールドの長さの違いを合計しました。

SELECT SUM(DIF) FROM (
select    
(
  LEN(comments)
          - LEN( REPLACE(   REPLACE ( comments, char(13), ''),char(10),'') ) 
) 
 AS DIF    
 from #testComments
 ) as VT;
于 2013-07-02T16:40:11.710 に答える