2012-02-16 2 views
1

저는 SQL 명령에 대해 매우 익숙합니다. 그래서 제발 저와 함께하십시오. 나는 이름의 JUST 부분으로 SKU (100A-B)를 교환 할값의 일부를 한 열에서 다른 열로 바꿉니 까?

SKU  Name 
---  ---- 
100A-B (F102397) 1 AFFF C-103 

:

dbo.Product

두 열 :

나는 하나의 테이블을 가지고 (F102397) SKU 열에 괄호없이. 단지 참고

SKU  Name 
---  ---- 
F102397 (100A-B) 1 AFFF C-103 

그리고, "이름"열이 항상 일치하지 않습니다 :

는 그래서 같은 것입니다. 의미는 항상 "1 AFFF C-103"과 같지 않을 것입니다. 때로는 "1AFFFC-103"또는 "1AFFF C-103"등이 될 수 있지만 값은 다릅니다. 공백이 있거나 공간이 없을 경우 후반부에 대해 걱정할 필요가 있습니까?

어쨌든이 작업을 수행 하시겠습니까? 어떤 도움이라도 대단히 감사하겠습니다. :) 내가 SQL-Server 2005의

** 편집 **

더 많은 예제 하나? 그리고 무엇을 얻으려고 함께 일하고 있어요.

대부분의 데이터가 표시되는 예입니다. 그 SKU의 일부 공간에서 엉망이지만 그게 내가 바꿀 수있는 옵션이 없어.

그리고 "이름"필드에()를 유지합니다.

SKU  Name 
---  ---- 
100A-B (F102397) 1 AFFF C-103 
101 A-F (F011889) TEST ITEM 
101 U-X (F060796) TEST ITEM 2 
102A-B (F102497) TEST ITEM 3 

결과

SKU  Name 
---  ---- 
F102397 (100A-B) 1 AFFF C-103 
F011889 (101 A-F) TEST ITEM 
F060796 (101 U-X) TEST ITEM 2 
F102497 (102A-B) TEST ITEM 3 
+3

추출/교환하려는 부분은 항상 괄호 안에 있습니까? –

+2

정규 표현식이 SQL Server에서 유용하게 사용될 수있는 또 다른 이유가 있습니다. 이것은'PATINDEX','SUBSTRING'과'REPLACE'로 절대적으로 할 수 있습니다; 그것은 어려울 수는 없지만 추한 것입니다. 예제를 제공하기 전에 더 좋은 방법이있을 경우를 대비하여 수행해야 할 것에 대한 자세한 내용을 제공 할 수 있습니다. –

+1

다른 의견에 동의합니다 ... 범위를 이해할 수 있도록 추가 예제를 제공하십시오.또한 하나의 열이 널 (NULL) 입력 가능하거나 괄호 또는 하위 문자열을 식별하는 데 사용되는 다른 조건을 포함하지 않을 수있는 경우 해당 예제를 포함하고 그러한 경우 수행 할 작업을 설명하십시오. 그것은 규칙을 해결하기 쉽습니다, 그리고 나중에 모든 예외를 올, 그리고 이것은 모두에게 더 많은 작업입니다 ... –

답변

2

당신은 가능한 string functions을 살펴 있어야합니다. 그것들과 함께 뭔가를 요리하는 것이 종종 가능합니다.

update dbo.Product 
set SKU = substring(Name, 2, charindex(')', Name)-2), 
    Name = stuff(Name, 2, charindex(')', Name)-2, SKU) 

이 이름 필드의 시작 부분에 항상 (이 있다고 가정합니다. 이름 입력란에 언제나 )이 있습니다. 이름 또는 SKU에는 널값이 들어 있지 않습니다.
그렇지 않은 경우 결과에 원하는 내용을 질문에 지정해야합니다.

업데이트하는 대신 데이터를 쿼리하기 만하면 select 문을 사용하십시오.

select substring(Name, 2, charindex(')', Name)-2), 
     stuff(Name, 2, charindex(')', Name)-2, SKU) 
from YourTableName 
+0

원본 게시물을 수정했습니다. – jwahr

+0

@jwahr 여기를 사용해보십시오 : http://data.stackexchange.com/stackoverflow/query/61652/swapit –

+0

@MickaelEriksson - 정말 고마워요. 내가 그걸로 가야 할 곳이 많습니다. 이제 내 다음 질문은 아마도 다른 모든 사람들에게도 명백하게 들릴 것 같지만, 내 테이블 (백업/테스트 테이블) (300 개 이상의 제품)에서 데이터를 찾고 방금 수행 한 내용을 적용하는 방법은 무엇입니까? 테이블을 업데이트 하시겠습니까? 결과 만 보시겠습니까? – jwahr

관련 문제