2014-02-26 6 views
0

이 작업 방법은 알지 못합니다. 내 테이블에는 설명 코드가 섞여 있습니다. 코드 설명을 제거해야하며 설명 만 필요합니다. 설명은 머리 글자가없는 첫 번째 부분입니다 (끝에 대문자). 나는 SQL 서버를 사용하는 예 2012원하지 않는 텍스트를 열 값에서 제거하십시오.

:

ColumnDescription 
Chemistry Q 
education E 
psychology P 
Sociology SOC 
Documentation DOC 
communication COM 
Political Science CP 
Pharmacy and Toxicology FT 
Engineering Education (General) ING-G 
+0

'설명 코드'는 어떻게 식별합니까? –

+0

죄송합니다 ... 편집 됨 – user2528557

+0

어떤 데이터베이스를 사용하고 있습니까? –

답변

1

는 단순히 각 문자열의 끝에 코드를 제거하고자하는 경우는,이 ​​작업을 수행 할 수있는 방법이의 마지막 공백 문자를 확인하는 것입니다 문자열과 그 문자 앞에 모든 것을 추출 SUBSTRING를 사용 : 나는 당신의 표라는 것을 모르는, 그래서 그것을 Table라고

SELECT SUBSTRING(ColumnDescription, 0, LEN(ColumnDescription) - CHARINDEX(' ', REVERSE(ColumnDescription)) + 1) AS ColumnDescription 
    FROM Table 

참고.

이 효과적으로 (REVERSE 사용) 칼럼 텍스트 반전 (CHARINDEX 사용) 스페이스 문자의 첫 번째 발생을 발견하고 (LEN를 이용하여) 텍스트의 길이로부터 이것을 감산한다. 문제 로 단순화 될 수 있다고 생각 엔 것 샘플 데이터를 기반으로

ColumnDescription 
----------------- 
Chemistry 
education 
psychology 
Sociology 
Documentation 
communication 
Political Science 
Pharmacy and Toxicology 
Engineering Education (General) 
+1

감사합니다 !!! 그것은 훌륭하고 똑똑했다! !! 고마워! – user2528557

+0

그러나 OP에서 원래 원하는 것은 수행하지 않습니다. 오른쪽에서 대문자 만 포함 된 부분을 제거/추출하십시오. 마지막 desc-code는'ING G' (공간 포함)라고 생각하십시오. –

+0

네, 맞습니다. 그러나 fortunatelly 모든 설명에는 코드 사이에 공백이 있고, 모든 코드는 함께 있고, 어떤 경우에는 -로 구분됩니다. 팁 주셔서 감사합니다! – user2528557

0

: 그런 다음 간단한 SUBSTRING는 출력의 결과로, 텍스트의 가장 왼쪽 부분을 추출하는 데 사용됩니다

분할 문자열의 마지막 공백 문자의 문자열

하는 경우 :

DECLARE @your_table table (
    ColumnDescription varchar(100) 
); 

INSERT INTO @your_table (ColumnDescription) 
    VALUES ('Chemistry Q') 
     , ('education E') 
     , ('psychology P') 
     , ('Sociology SOC') 
     , ('Documentation DOC') 
     , ('communication COM') 
     , ('Political Science CP') 
     , ('Pharmacy and Toxicology FT') 
     , ('Engineering Education (General) ING-G'); 

SELECT * 
    , SubString(ColumnDescription, number_of_characters - last_space + 2, 100) As last_part 
    , SubString(ColumnDescription, 0, number_of_characters - last_space + 2) As first_part 
FROM (
     SELECT ColumnDescription 
      , Len(ColumnDescription) As number_of_characters 
      , Reverse(ColumnDescription) As reversed 
      , CharIndex(' ', Reverse(ColumnDescription)) As last_space 
     FROM @your_table 
     ) As x; 
관련 문제