2016-06-10 38 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 
相关问题