2009-07-17 5 views
1

Ich habe eine Tabelle in meiner MS SQL-Datenbank, wo es einige unvollständige Daten in einem Feld hat. Dieses fragliche Feld ist ein varchar-Feld und hat etwa 1000 Zeichen im Feld. Diese Zeichenfolge besteht aus Segmentierungen von Wörtern im Format eines Schrägstrichs gefolgt von dem Segment und endet dann mit einem Schrägstrich (d. H./P /). Jedes dieser Segmente wäre durch ein Leerzeichen getrennt. Das Problem besteht darin, dass bestimmte dieser Segmentierungen nicht den letzten Schrägstrich (d. H./P) haben. Ich muss ein T-SQL-Skript schreiben, das dieses Problem beheben würde.Ersetzen Sie bestimmte Muster in einer langen Zeichenfolge in MS SQL mit T-SQL

Ich weiß, dass ich eine update-Anweisung verwenden muss, um das zu tun. Ich habe auch die Where-Klausel. Aber das Problem, das ich habe, ist das, wofür ich es gleich auslege. Da die Zeichenfolge ungefähr 1000 Zeichen hat, möchte ich nicht die tatsächliche Zeichenfolge eingeben und nur die problematische Segmentierung korrigieren. Meine Frage ist, gibt es eine "RegEx Replace-Funktion", die nur problematische Segmentierungen ändern und den Rest der Saite alleine lassen würde?

Ihre Hilfe wird sehr geschätzt.

Vielen Dank im Voraus, Monte

Antwort

1

SQL unterstützen innerhalb es nicht RegEx. Sie könnten eine SQL CLR-Funktion schreiben und dann die Daten durchleiten. Wenn es ein Problem mit den Daten gibt, korrigieren Sie die korrigierte Version in SQL.

UPDATE YourTable 
    Set YourColumn = dbo.YourClrProc(YourColumn) 
1

Wenn Sie Windows Scripting Host (die meisten Maschinen tun) installiert haben, dann können Sie this method verwenden in das VBScript.RegExp Objekt von T-SQL zu nennen.

1

Es gibt REPLACE, aber nichts ist RegEx nah.

Wenn dies eine einmalige Operation ist, dann können Sie die Tabelle exportieren, ein Werkzeug wie sed oder grep verwenden und die geänderten Daten dann wieder importieren. Es wird wahrscheinlich schneller und korrekter sein, als dies in T-SQL zu versuchen.

Auf der anderen Seite, wenn es eine geplante Wartung Operation ist, müssen Sie oft wiederholen, um die Daten zu pflegen, dann stimme ich mit mrdenny, eine CLR-Funktion ist wahrscheinlich die beste Wahl.

Verwandte Themen