Frage

Ich habe also eine Tabelle, nennen wir sie beispielsweise „tbl.items“, und es gibt eine Spalte „Titel“ in „tbl.items“. Ich möchte jede Zeile und für jeden „Titel“ in „tbl.items“ durchlaufen Gehen Sie wie folgt vor:Die Spalte hat den Datentyp nvarchar(max) und enthält eine Zeichenfolge ...

  1. Filtern Sie die Zeichenfolge, um Wörter wie „in“, „out“, „wo“ usw. (Stoppwörter) zu entfernen.
  2. Vergleichen Sie den Rest der Zeichenfolge mit einer vordefinierten Liste und führen Sie bei einer Übereinstimmung eine Aktion aus, bei der auch Daten in andere Tabellen eingefügt werden.

Das Problem ist, dass ich unwissend bin, wenn es um das Schreiben von T-SQL-Skripten geht. Bitte helfen Sie mir und führen Sie mich an. Wie kann ich das erreichen?ob es durch das Schreiben eines SQL-Skripts erreicht werden kann?Oder muss ich eine Konsolenanwendung in C# oder einer anderen Sprache entwickeln?

Ich verwende MSSQL Server 2008

Dank im Voraus

War es hilfreich?

Lösung

Du willst ein paar Dinge.Schlagen Sie zunächst die Syntax von SQL Server für Funktionen nach und schreiben Sie etwa Folgendes:

-- 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

Dann benötigen Sie Ihre Trefferliste in einer Tabelle, nennen Sie diese „vordefiniert“ mit einer Spalte „matchString“.

Dann können Sie die passenden Zeilen abrufen mit:

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

Sobald diese einzelnen Teile funktionieren, schlage ich eine neue Frage vor, welchen speziellen Prozess Sie möglicherweise damit durchführen.

Warnung:Sie wissen nicht, wie viele Zeilen Sie haben oder wie oft Sie dies tun müssen (jedes Mal, wenn ein Benutzer etwas speichert?Einmal/Tag?), wird das nicht gerade flott sein, wenn Sie wissen, was ich meine.Sobald Sie diese Bausteine ​​in der Hand haben, stellt sich möglicherweise auch die Frage, wie und wann Sie dies tun sollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top