2012-04-02 2 views
1

다음 행이있는 SQL 테이블이 있습니다.SQL - 필드 업데이트

(4081, 3, '', 'contrapreneurship.jpg', 15.0000, '2007-07-09 05:16:35', '2007-07-15 12:41:03', NULL, 0.00, 1, 1, 0, 0), 
(4082, 3, '', 'istandaccused.jpg', 12.9500, '2007-07-15 12:34:00', '2007-07-15 12:37:24', NULL, 0.00, 1, 1, 0, 0), 
(4083, 3, '', 'excitingthesenses.jpg', 45.0000, '2007-07-22 14:00:47', '2007-07-22 14:01:24', NULL, 0.00, 1, 1, 0, 0), 
(4232, 2, '', 'ambushindevilspass.jpg', 125.0000, '2008-07-11 11:00:19', '2008-07-11 11:50:36', NULL, 0.00, 0, 1, 0, 0), 

이제 이미지의 경로가 변경되었습니다. 파일 경로를 업데이트하는 필드를 어떻게 업데이트합니까? 다음과 같이해야합니다. '/new/images/istandaccused.jpg'

저는 수천 줄이 있습니다. 어떻게 업데이트합니까?

답변

5
UPDATE myTable 
    SET ImagePath = '/new/images/' + ImagePath 

이에 대량 업데이트를 할 것입니다 추가하는 것을 고려할 수 있습니다 원래 ImagePath 값 앞에 /new/images/을 삽입하는 테이블.

난 강력하게 당신의 문이된다 있도록하는 BEGIN TRAN 내 전체 문을 캡슐화 제안했다 :

다음
BEGIN TRAN 
UPDATE myTable 
    SET ImagePath = '/new/images/' + ImagePath 

당신이 다음 COMMIT 또는 ROLLBACK 중 하나를 확인 번호가 정확한지 확인하기 위해 SELECT을 수행 할 수 있습니다 트랜잭션에 문제가있는 경우

조금 더 생각하면 WHERE 절을 추가해야 실제 이미지가있는 레코드에만 경로를 추가 할 수 있습니다. 거기에 내가 생각할 수있는 2 개 WHERE 조항이 있고 그들은 : 거기에 이미지없고 이미지 필드가 null의 경우

BEGIN TRAN 
UPDATE myTable 
    SET ImagePath = '/new/images/' + ImagePath 
WHERE ImagePath IS NOT NULL 

그리고

BEGIN TRAN 
UPDATE myTable 
    SET ImagePath = '/new/images/' + ImagePath 
WHERE ImagePath <> '' 

첫 번째 뜻

모든 레코드를 제외합니다. 두 번째는 첫 번째 조합이지만 빈 문자열이 레코드에 추가되었는지 확인하기위한 추가 검사입니다. 여기에 몇 가지 대안이있을 수 있지만,이 두 가지가 시작됩니다.

+0

'ImagePath <> '''그러면 네 번째 쿼리에서'WHERE ImagePath <> '''만 있으면됩니다. –

2

파일 이름에 대한 경로를 미리 보류하고 있기 때문에 매우 간단합니다.

UPDATE table_name 
SET field_name = '/new/images/' + field_name 

당신이 경우에 절은 그냥 경로를 포함하는 값으로 끝내고 싶지 않아 어디가

WHERE field_name <> ''