Ich habe eine [Nachricht] Spalte, die Hostname Informationen enthalten kann - die ich ersetzen muss und Teile davon entfernen.Wie ersetzt man die Instanz der Zeichenfolge in SQL Server, wenn ein anderes Muster folgt?
Die Aussage, die ich schrieb, dies zu tun war:
update table1
set message = replace(replace(message ,'RL','NN'),'.COMPANY.COM','')
where message is not NULL
So ein Hostname, der als RL12345.COMPANY.COM als NN12345 zurückkehren erscheint.
Das Problem ist, dass wenn "RL" irgendwo anders in der Nachrichtenspalte erscheint, wird es fälschlicherweise ersetzt. Gibt es eine Möglichkeit, mit einer Regex bedingt zu ersetzen? Ich konnte überprüfen, dass die Anzahl der numerischen Zeichen zwischen RL und .COMPANY.COM zum Beispiel immer zwischen 7-9 lag.
Zur Klarstellung, obwohl RL immer der Anfang der Hostnamen-Zeichenfolge ist, kann es nicht (und wird wahrscheinlich nicht) der Anfang der gesamten Zeichenfolge in der Nachrichtenspalte sein.
z.B .:
„Versuchte RL12345.COMPANY.COM zugreifen ohne Erfolg“
Es gibt auch mehrere Host-Namen-Instanzen in der eine Zelle sein kann, müssen alle Instanzen tansformed werden.
sollte immer auftreten RL vor dem ersten ' .' Charakter? –
Ja, RL wird immer die ersten beiden Buchstaben des Hostnamens sein und daher immer dem ersten vorangehen. Charakter – alexmc
Sorry, um zu klären - es wird dem ersten vorausgehen. Zeichen im Hostnamen, aber nicht unbedingt in der gesamten Zeichenfolge. – alexmc