2013-05-08 4 views
1

뷰를 만들 필요가있는이 테이블을 TABLEABC라고 부릅니다. 이 테이블에 관한 것은 그것이 2 개의 컬럼을 가지고 있다는 것입니다. 1 열은 C1을 호출하고 CHAR (25) 열입니다. 충분히 쉽습니다.테이블 열의 "오프셋"을 기반으로 한 Oracle보기

까다로운 부분은 다음 열 .... 그리고 내가 그걸로해야 할 일. 우리는 C2라고 부르며 600 바이트입니다!

왜 묻을 수 있습니까? 데이터를 오프셋을 기준으로 저장하므로 600 자입니다. 예를 들어

은 15 오프셋 시작 : 1 개 엔딩 오프셋 : 그러니까 기본적으로 나는에 따라이 열을 저장해야 49

: 45 오프셋 시작 : 13의 종료 오프셋 (offset) (12) NAME2이 크기 NAME1 크기입니다 오프셋, 그리고 "Offset Named"가 구체적 일 필요가 있습니다. IE NAME1/NAME2 (실제로는 다른 것들이 있지만 Name1/Name2는 현재) 15 개 정도의 오프셋이 있습니다.

이제 오라클 관리 도구를 조금 이나마했지만 기본 기능 만 수행했습니다. 나는 SQL Server를 더 잘 알고 있지만, 이것은 내가했던 일을 넘어선 것이지만, 항상 도전을 찾고 있습니다. 조회수는 저에게 새로운 것입니다. 그래서 그것은 그것을 더욱 어렵게 만듭니다.

SELECT SUBSTR(C2, 1, 12) As NAME1 from TABLE 

것이라고 작업 :

내가 좋아하는, 어쩌면 이것은 SUBSTR 기능이 될 것입니다 내기? 나는 저장 프로 시저 (Stored Procedures)에서 아무 것도하지 않았으므로 아마도 더 나은 방법 일 것입니다.

편집 :

그래서 샘플 현명한에 대한,이 작품처럼 무언가를 (필자는 다른 오프셋을 추가해야합니다). (어떻게 선택 문을 정렬하는 방법을 모르겠다, 그냥 서로 위에 얹어 추가 할 수 있습니까?)이 작업을합니까? (선택 나머지 추가한다고 가정합니다.) 그리고 아무 것도 끝에 추가해야합니까?

TABLE

에서 "NAME2"표
SELECT SUBSTR (C2, 13, 45)로부터
TABLE SELECT SUBSTR "NAME1"으로서 (C2, 1,12) 행
AS SELECT C1 VIEW VIEW1을 만들
+0

위치가 고정되어 있으면 'substr'이 이동 방법입니다. 당신이 테이블을 조심스럽게 계획하고 있다면, 나는 종종 'materizlied view'를 만드는 것이 좋습니다. – haki

+0

일반적으로 'SUBSTR'이 최선의 방법입니다. 저장 프로 시저에 의지하지 않아도됩니다. 다른 몇 가지 사항 : (a) 귀하의 질문에 'NAME1'은 (는) 크기가 15이고 오류가 있다고 생각합니다. 그것은 약간 혼란스럽고 (b)) 이것이 "진짜"관점이라면 어떤 관리 작업을 마친 누군가로서 데이터를 저장하는 최선의 방법이 아니라는 것을 안다. 'C2'가 그 것처럼 끝난 이유가 있을까요? –

+0

이것은 다행히도 haah (하지만이 특정 작업에 배정되었습니다) 데이터베이스가 아니기 때문에 왜 이런 식인지 전혀 알지 못합니다. 나는 그것이 원래 인쇄에 사용되었다고 생각합니다. 불행히도 그것은 바뀔 수 없으며, 바뀌지 않을 것이라고 말합니다. –

답변

1

이와 비슷한 것

CREATE VIEW VIEW1 AS 
    SELECT 
    C1, 
    SUBSTR(C2, 1,12) AS NAME1, 
    SELECT SUBSTR(C2, 13, 45) AS NAME2 
    FROM 
    TABLE1; 

잘 작동합니다.

+0

감사합니다. 어딘가에 테이블 이름이 필요하지 않니? –

+0

물론, 죄송합니다! 보기는 단지 명명 된 select 문일뿐입니다. 즉,'select view ; –

+0

과 같이보기 만들기 입니다. select 문에서 NAME1/NAME2는 "큰 따옴표"또는 "작은 따옴표"또는 둘 다 필요합니까? 예를 들어 이름이 같다면 –

관련 문제