2016-06-10 75 views
0

我需要從列的開頭刪除文件路徑。我有3列的桌子,只有我想要刪除的路徑。從字符串中除去與其他列匹配的值

所以我有這樣一個表:

enter image description here

有沒有在SQL Server 2008中的任何方式,我可以刪除它的路徑列相匹配的文本?

感謝

+0

編輯您的問題,並提供採樣數據和期望的結果*在問題*,優選爲文本。 –

+2

該列包含文件以及文件夾的路徑。你想刪除哪些?具體並顯示所需的結果。 –

+0

抱歉,它不會允許我張貼截圖。基本上我想從列[Dataconv]中刪除與[Path]中的文本匹配的所有文本。因此,從屏幕截圖中,每行所剩下的就是測試數據,測試數據2等。如果它的文件夾結構不是我想要刪除的文件。 – rory83

回答

0

你可以嘗試使用替代?

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; 

返回:

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

我試過那裏,它刪除它的一些記錄,但不是所有。在某些記錄中,文件名後沒有空格,因此它可能是C:\ windowsTest_data_1這是否會導致替換問題? – rory83

+0

我可以添加另一列與我想要刪除的路徑的長度。 IT始終處於dataconv字段的開頭。所以我可以這樣做,它會根據長度字段中的內容刪除前x個字符。 – rory83

+0

REPLACE不應該在乎是否有空格,它只是尋找一段文字,然後替換它,在這種情況下什麼都不是。也許如果你有一個它不工作的例子? –

3

試試這個

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 
相關問題