Q&A

  • 간단한 SQL문인거 같은데...며칠동안 미치겠네요...
이거 여기다 질문해도 되는지 모르겠네요...
DB프로그래밍중인데 SQL문으로 데이타를 출력해야 되는 문제인데 도무지 몰라서 질문올립니다.

DATA가 이렇게 나와 있어요.

컬럼명 [Ship_no]     [Block_no]      [Structure]      [Module]      [unit]         [Weight]
데이타  H1011         1000/104        d99g-104abcd       a19bd           3               0.23892992322

이런 식으로 나와 있구요...

이것들 중에서 실제 화면에 나오는 부분은...

[Ship_no]     [Block_no]      [Structure]     [Module]         [Total]
1011                 104                abcd            그대로          [unit*Weight]의값.단 소수첫째자리까지만

이렇게 select해야 되거든요.
Ship_no같은거야 substr()함수써서 쓴다쳐도 Structure같은 것은 어떻게 짜줘야 하나요?
Structure경우는 Blok_no에서 추출한 데이타(위화면에서 104) 뒷부분(즉 abcd)을 출력해야 하는데요.
이건 substr()쓸수 없는게 어떤 데이타는 짧은 것도 있거든요... ex) Structure가 "104bcdf"인 경우도 있음

이경우를 만족할 수 있는 SQL문 형식은 어케 써야할까요? 며칠동안 생각해봐도 도무지 모르겠어요. 책에도 본적이 없어서요...

부탁드리겠습니다.
2  COMMENTS
  • Profile
    양승렬 2004.05.06 22:15
    ms-sql 기준으로 작성하였습니다.
    CREATE TABLE #A
    ([Ship_no] varchar(10),
    [Block_no] varchar(10),      
    [Structure] varchar(20),    
    [Module] varchar(10),        
    [unit] int,
    [Weight] float)

    GO

    INSERT INTO #A VALUES('H1011', '1000/104', 'd99g-104abcd', 'a19bd', 3, 0.23892992322)

    GO

    SELECT SUBSTRING(ship_no, 2, LEN(ship_no)) AS Ship_no,
                     SUBSTRING(Block_no, CHARINDEX('/', Block_no) + 1, LEN(Block_no)) AS Block_no,
                     SUBSTRING(Structure,
                                              CHARINDEX(SUBSTRING(Block_no, CHARINDEX('/', Block_no) + 1, LEN(Block_no)), Structure) +
                                                                            LEN(SUBSTRING(Block_no, CHARINDEX('/', Block_no) + 1, LEN(Block_no))),
                                               LEN(Structure)) AS Structure,
                     Module, CONVERT(DECIMAL(15, 2), unit * Weight) AS total
      FROM #A

    쿼리분석기에서 굴림체로 하셔서 복사하시면 들여쓰기가 그나마 되어있을겁니다.


  • Profile
    박수영 2004.05.06 20:42



    그냥 select해서 하면 안되나요?

    새로운 필드를 하나 만들어서 해당 필드의 값을 뒤에서 4자리만넣어서 그걸 출력하면????