2016-06-10 2 views
0

열의 시작 부분에서 파일 경로를 제거해야합니다. 3 열이있는 표가 있는데 제거하려는 경로 만 있습니다.다른 열과 일치하는 문자열에서 값을 제거하십시오.

enter image description here

나는 그것이 경로 열을 일치하는 텍스트를 제거 할 수 있습니다 SQL Server 2008의 어떤 방법이 있나요 :

그래서 내가 같은 테이블이 있나요?

감사

+0

편집 질문 및 샘플 데이터를 제공하고 원하는 결과는 바람직 텍스트로, 질문 *에 *. –

+2

열은 파일과 폴더의 경로를 포함합니다. 어떤 것을 제거 하시겠습니까? 구체적으로 원하는 결과를 나타내십시오. –

+0

죄송합니다. 스크린 샷을 게시 할 수 없습니다. 기본적으로 [Path]의 텍스트와 일치하는 [Dataconv] 열에서 모든 텍스트를 제거합니다. 그래서 모든 스크린 샷에서 각 행에 대해 테스트 데이터, 테스트 데이터 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 
관련 문제