2016-06-10 3 views
0

Ich muss einen Dateipfad vom Anfang einer Spalte entfernen. Ich habe eine Tabelle mit 3 Spalten, eine hat nur den Pfad, den ich entfernen möchte. SoEntferne den Wert von der Zeichenkette, wo er mit einer anderen Spalte übereinstimmt

Ich habe eine Tabelle wie:

enter image description here

Gibt es eine Möglichkeit in SQL Server 2008, die ich den Text entfernen kann, wo sie die Pfad-Spalte?

Dank

+0

Bearbeiten Sie Ihre Frage und Beispieldaten und die gewünschten Ergebnisse liefern * in der Frage *, vorzugsweise als Text. –

+2

Die Spalte enthält Pfade zu Dateien und Ordnern. Welche möchten Sie entfernen? Seien Sie spezifisch und zeigen Sie das gewünschte Ergebnis. –

+0

Tut mir leid, es wird mir nicht erlauben, einen Screenshot zu posten. Grundsätzlich möchte ich den gesamten Text aus der Spalte [Dataconv] entfernen, der mit dem Text in [Path] übereinstimmt. Also aus dem Screenshot wäre alles, was für jede Zeile übrig wäre, Testdaten, Testdaten 2 usw. Wenn es eine Ordnerstruktur und keine Datei ist, möchte ich sie auch entfernen. – rory83

Antwort

0

Sie könnten versuchen, ersetzen verwenden?

DECLARE @table TABLE (id INT, dataconv VARCHAR(500), [path] VARCHAR(500)); 
INSERT INTO @table SELECT 1, 'C:\windows test_data_1', 'C:\windows'; 
INSERT INTO @table SELECT 2, 'C:\windows\test.ini test_data_2', 'C:\windows\test.ini'; 
INSERT INTO @table SELECT 3, 'C:\word docs\doc.ini test_data_3', 'C:\word docs\doc.ini'; 
INSERT INTO @table SELECT 4, '/P/TestUser/dfg002/SinglePageCV''s/JoeBloggs.doc33216root;[email protected];D‌​omain:[email protected] 1330820929 1003750078 1055597658', '/P/TestUser/dfg002/SinglePageCV''s/JoeBloggs.doc'; 
SELECT id, LTRIM(REPLACE(dataconv, [path], '')) FROM @table; 

Returns:

1 test_data_1 
2 test_data_2 
3 test_data_3 
4 33216root;[email protected];D??omain:[email protected] 1330820929 1003750078 1055597658 
+0

Ich habe das dort versucht und es für einige der Aufzeichnungen entfernt, aber nicht für alle. In einigen Datensätzen ist hinter dem Dateinamen kein Leerzeichen, daher könnte es C: \ windowsTest_data_1 sein. Würde dies zu Problemen beim Ersetzen führen? – rory83

+0

Ich kann eine weitere Spalte mit der Länge des Pfades hinzufügen, den ich entfernen möchte. ITs immer am Anfang des Datenconv-Feldes. Also könnte ich es tun, dass es die erste x Zahl von Zeichen entfernt, abhängig davon, was im Längenfeld ist. – rory83

+0

ERSETZEN sollte es egal sein, ob es Leerzeichen gibt oder nicht, es sucht nur nach einem Stück Text und ersetzt es dann in diesem Fall durch nichts. Vielleicht, wenn Sie ein Beispiel dafür hätten, dass es nicht funktioniert? –

3

Versuchen Sie, diese

UPDATE Table x 
SET x.dataconv = SUBSTRING(x.dataconv,LEN(x.path),LEN(x.dataconv)) 
WHERE SUBSTRING(x.dataconv,1,LEN(x.path)) == x.path 
Verwandte Themen