0

だから私はそれを「tbl.items」と呼ぶテーブルを持っていて、「tbl.items」に「title」列があり、各行をループしたいのですが、「tbl.items」の「title」ごとに次 の手順を実行します。列のデータ型はnvarchar(max)で、文字列が含まれています。

  1. 文字列をフィルタリングして、in、out、whereなどの単語を削除します(ストップワード)
  2. 文字列の残りの部分を事前定義されたリストと比較し、一致するものがある場合は、他のテーブルにもデータを挿入することを含むアクションを実行します。

T-sqlスクリプトの記述に関しては、問題は無知です。plzは、これをどのように達成できるかを教えてくれます。それがSQLスクリプトを書くことによって達成できるかどうか?または、C#または他の言語でコンソールアプリケーションを開発する必要がありますか?

mssqlサーバー2008を使用しているim

前もって感謝します

4

1 に答える 1

1

あなたはいくつかのものが欲しいです。まず、SQL Serverの関数の構文を調べて、次のように記述します。

-- Warning! Code written off the top of my head,
-- don't expect this to work w/copy-n-paste
create function removeStrings(@input nvarchar(4000))
as begin
    -- We're being kind of simple-minded and using strings
    -- instead of regular expressions, so we are assuming a
    -- a space before and after each word.  This makes this work better:
    @input = ' ' + @input

    -- Big list of replaces
    @input = replace(' in ','',@input)
    @input = replace(' out ','',@input)
    --- more replaces...
end

次に、テーブル内の一致のリストが必要です。これを「matchString」列で「事前定義」と呼びます。

次に、次のコマンドで一致する行を取得できます。

select p.matchString
  from items i
  join predefined p 
    on removeStrings(i.title) = p.matchString

それらの個々の部分が機能するようになったら、それらを使用してどのような特定のプロセスを実行しているのかについて、新しい質問を提案します。

警告:行数やこれを実行する頻度(ユーザーが何かを保存するたびに?1日1回?)がわからない場合、私が何を意味するかを知っていれば、これは正確には問題になりません。したがって、これらのビルディングブロックを手に入れたら、それをいつどのように行うかについてのフォローアップの質問もあるかもしれません。

于 2011-01-29T15:22:36.637 に答える