그것은 수행하려는 작업에 조금 따라 달라집니다. 작동 방식 :
select substr(column4, 0, 5), t1.* from sometable t1;
그러나 열 4를 두 번 반환합니다. 한 번 5 문자 (고정 길이를 사용하지 않고 마지막 5 글자를 버리고 싶은 경우 다른 답변과 같이 길이를 사용하고 목표가 무엇인지 명확하게하지 말고) 모든 문자를 한 번 사용하십시오.
user_tab_columns를 사용하여 PL/SQL로 SQL을 생성 할 수도 있습니다. 이런 식으로 뭔가를 저장하고 싶다면 다음과 같이 입력하십시오 :
declare
v_sql varchar2(1024) := null;
begin
for rec in (select column_name, table_name from user_tab_columns
where table_name = 'TEST1') loop
if v_sql is null then
v_sql := 'select ';
else
v_sql := v_sql || ',';
end if;
if rec.column_name = 'C2' then
v_sql := v_sql || ' substr(' || rec.table_name || '.c2, 0, 5)';
else
v_sql := v_sql || rec.table_name || '.' || rec.column_name;
end if;
end loop;
v_sql := v_sql || ' from test1';
dbms_output.put_line(v_sql);
end;
/
코드 스타일에는 포인트가 없지만 SQL을 작동하고 인쇄합니다. 여러 열을 자르고 필요에 따라 다른 표를 추가해야하는 경우 특별한 경우를 추가하십시오.
게으르면 안됩니다. 모두 지정하십시오! (단, 하위 문자열 부분 만 건너 뛰어도됩니다.) – jarlh
@jar 테이블에 20 개 이상의 열과 10 개 이상의 테이블이 있습니다. 최소한 200 개의 열을 지정해야합니다. 더 좋은 방법이 없을까요? –
약간의 어려움이 있지만 항상 열 목록을 선호 할 수 있습니다. [select * vs select column] (http://stackoverflow.com/questions/3180375/select-vs-select-column) –