Gibt es eine Möglichkeit zum ersetzen eines Zeichens oder einer Zeichenfolge in alle Felder schreiben ohne es für jedes einzelne Feld?
Werde ich Sie warnen vorne, diese Frage grenzt an dumm, aber ich Frage trotzdem.
Den Anstoß für meine Frage ist, erstellen Sie eine csv aus einer Abfrage ergeben und einige der Felder, die Kommata schon. Offensichtlich ist die csv nicht besser weiß und einfach nur fröhlich Buben meine gute Laune, indem er einige Nachzügler in nicht-Feld-Spalten.
Ich weiß, ich kann schreiben
Replace(FieldName, OldChar, NewChar)
für jedes Feld, aber ich bin mehr neugierig als alles andere, wenn es eine Verknüpfung, um Sie zu ersetzen alle in die Ausgabe der Abfrage.
Im Grunde das, was ich Suche (logisch) ist:
Replace(AllFields, OldChar, NewChar)
Ich kenne nicht alle von der SQL-tricks (oder viele von Ihnen), so dachte ich, vielleicht ist das SO Gemeinschaft in der Lage sein kann mich aufklären...oder rufen Sie mich verrückt.
- Haben Sie sich überlegt mit einem anderen Trennzeichen für die "csv" - Datei? Zum Beispiel, wenn Sie verwendet pipe (|), dann würde es vermutlich nicht stören Felder. Die meisten Anwendungen, die Daten importieren lassen, wählen Sie das Feld Trennzeichen.
- denn das wäre ja zu einfach und machen absolut Sinn. =) Wie ich schon sagte, das war mehr um meine Neugierde zu befriedigen als alles andere.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist keine SQL-syntax zu tun, was Sie beschreiben, aber wie Sie gesehen haben gibt es viele Möglichkeiten, dies zu tun mit dynamischen SQL. Hier ist der Weg, den ich bevorzugen (dies setzt Voraus, das Sie ersetzen möchten, Kommas mit Rohr, ändern Sie diese wie Sie sehen, passen):
Ich fühle deinen Schmerz. Ich habe oft one-time-Typ Reinigungsschritte in ETL-Routinen. Ich finde ein Skript wie dieses hilft, wenn Sie entfernen müssen manche kuriosität aus einem import (rogue Seitenumbrüche, Leerzeichen, etc.):
FOR XML PATH
ändern legitim>
,<
etc. in>
und<
? Auch wenn Sie sich die Mühe das schema, warum ignorieren Sie im Vergleich statt zu sagen:t.[object_id] = OBJECT_ID(@tableName)
?Wenn Sie gerade auf der Suche, sparen Sie sich einiges an Tipparbeit für eine einmalige Abfrage-Anweisung, die alle Felder in einer Tabelle, dann ist dies ein trick, den ich in der Vergangenheit verwendet habe.
Erste Abfrage des Schemas zu produzieren, die ein ResultSet zurückgibt, die alle Feldnamen in einer Tabelle, die Sie angeben. Sie können ändern, was habe ich hier als Vorlage, aber ich habe da die grundlegende Struktur einer update-Anweisung, um die Feldnamen.
ResultSet zurück kommt in query analyzer als eine Reihe von Zeilen können Sie markieren, indem Sie auf die Spalte name) und dann kopieren und einfügen direkt wieder in Ihre query analyzer-Fenster. Von dort aus fügen Sie Ihre update-Anweisung an den Anfang und where-Klausel am Ende. Werden Sie auch brauchen, um loszuwerden, das ein zusätzliches Komma.
Können Sie dann führen Sie die Abfrage erneut zu produzieren, die den Wunsch Ergebnis.