1

itextsharp によって抽出された pdf のテキストを SQL Server データベースの列に保存するプロジェクトに取り組んでいます。一部の要件では、ドキュメントを検索するプロシージャにドキュメント テキストをパラメーターとして指定してドキュメントを検索する必要があります。コードは

   @docText varchar(8000)

   select * from document d

   where convert(varchar(8000),d.text) = @docText

問題は、ドキュメントのテキスト サイズが 8000 未満 (たとえば 2600 ) の場合、このクエリでは一致せず、上記のクエリではサイズを convert(varchar(len(@docText)),d.text) として設定できないことです。

プロシージャに動的に渡されるパラメータ サイズと同じ列 (テキスト) サイズを設定する方法。

4

3 に答える 3

1

私の最初の考えは、これが必要だということです:

declare @docText varchar(max);

select *
  from document d
 where d.text = @docText;

VARCHAR(MAX)サイズが 0 バイトから 2 GB までの任意の varchar を保持する型です。変数の性質から VARying-CHARacter と呼ばれます。末尾のスペースは自動的に重要ではないと見なされます ABCDEF_____ = ABCDEF(つまり、最初の末尾のスペースは 5 つです)。

この理由 (末尾のスペースの処理) のため、 は必要ありませんCONVERT(varchar(<exact-length>), text)

列はどの型d.textとして定義されていますか? VARCHAR(8000) の場合は、VARCHAR(MAX) にアップグレードすることをお勧めします。1冊の本に8000字以上あるって?

入力 @docText に 8000 になるように文字を埋め込んでいませんか? たとえば、末尾にドットや byte(0) 文字を追加していますか?

于 2013-04-02T02:26:44.880 に答える