2012-09-15 3 views
0
내가 열에서 내 데이터를 분리 할

, 내 데이터는 별도의 숫자 및 문자 데이터 2005 쿼리

column1 
1.1.1 Eastern express highway 
1.1.2 weater way 
2.1 water 
2.1.2 land 
2.2 sand 

내 출력

column1  column2  column3 
1.1   1   Eastern express highway 
1.1   2   weater way 
2.1   0   water 
2.1   2   land 
2.2   0   sand 
+0

당신이 시작하는 더 유용한 테이블을 가지고있는 scema을 변경할 수 있습니다 시도? – Mark

답변

0
SELECT 
    SUBSTRING(ProductDescription, 1, 
     CHARINDEX(' - ', ProductDescription) - 1 
    ) AS Field1, 
    SUBSTRING(ProductDescription, 
     CHARINDEX(' - ', ProductDescription) + 3, 
     CHARINDEX(' - ', ProductDescription, 
      CHARINDEX(' - ', ProductDescription) + 3 
     ) - (CHARINDEX(' - ', ProductDescription) + 3) 
    ) AS Field2, 
    SUBSTRING(ProductDescription, 
     CHARINDEX(' - ', ProductDescription, 
      CHARINDEX(' - ', ProductDescription) + 3) + 3, 
     LEN(ProductDescription) 
    ) AS Field3, 
    ProductDescription 
FROM your_table 
+0

m "잘못된 길이 매개 변수가 SUBSTRING 함수에 전달되었습니다."오류가 발생합니다. –

+0

적절한 길이의 문자열을 추가하십시오. – jainvikram444

+0

SELECT SUBSTRING (vProjectName, 1, CHARINDEX ('.', vProjectName) - 1) AS 필드 1 SUBSTRING (vProjectName, CHARINDEX ('.', vProjectName) + 3, CHARINDEX ('.', vProjectName, CHARINDEX ', vProjectName) + 3) - 3) - (CHARINDEX ('. ', vProjectName) + 3)) AS Field2 SUBSTRING (vProjectName, CHARINDEX ('. ', vProjectName), CHARINDEX , LEN (vProjectName)) AS Field3, vProjectName 프로젝트에서 –

0

그렇게하지해야한다입니다 왜 이런 식으로하고 싶은지 알지만 샘플 용으로 사용할 수 있습니다.

SELECT 
    substring(section,1,3) as column1, 
    CASE WHEN LEN(section)<5 THEN '0' 
    ELSE 
    SUBSTRING(section,5,1) 
    END as column2 
FROM MyTable 
+0

기본적으로 나는 어떤 숫자도 갖지 않는 합계 필드를가집니다. 즉, "날짜 마음"날짜 마음은 3 번째 열에 있어야하고 1 번째 및 2 번째 열은 null 또는 0이어야합니다. –

0
SELECT 
    substring(column1,1,3) as column1, 
    CASE WHEN PATINDEX('%[0-9]%',RTRIM(SUBSTRING(column1,4,7)))=0 THEN '0' 
    ELSE 
    SUBSTRING(column1,5,1) 
    END as column2, 
    --RTRIM(SUBSTRING(column1,7,43))as column3 
    CASE WHEN PATINDEX('%[0-9]%',RTRIM(SUBSTRING(column1,4,7)))!=0 
    THEN RTRIM(SUBSTRING(column1,7,43)) 
    ELSE 
    RTRIM(SUBSTRING(column1,5,43)) 
    END as column3 
FROM MyTable