Приведение типа при создании таблицы

AndreyArtemev
Дата: 23.11.2009 10:58:44
Создаю таблицу следующим образом при этом получается тип char(2), а нужно получить varchar2(2) как то можно это выполнить используя именно select ?

create table test as (
   select '--' name from dual where 1=0  
)
Вячеслав Любомудров
Дата: 23.11.2009 11:00:54
cast ?
Cickis
Дата: 23.11.2009 11:02:26
Можно так
[SRC oracle]create table test as (
select cast('--' as varchar(2)) name from dual where 1=0
)
AndreyArtemev
Дата: 23.11.2009 11:03:18
Да, спасибо!

   select cast ('--' as varchar2(2) ) name from dual where 1=0  
Cickis
Дата: 23.11.2009 11:04:15
create table test as (
select cast('--' as varchar(2)) name from dual where 1=0 
)
Bfink
Дата: 23.11.2009 11:19:16
AndreyArtemev,

В create table можно описать все типы колонок, вне зависимости используется AS SELECT или нет.
Вячеслав Любомудров
Дата: 23.11.2009 11:23:07
tst> create table t1(name varchar2(3)) as select '--' name from dual;
create table t1(name varchar2(3)) as select '--' name from dual
                *
ERROR at line 1:
ORA-01773: may not specify column datatypes in this CREATE TABLE
orawish
Дата: 23.11.2009 11:46:19
(вообще, конечно, cast.)

при том, что:
SQL> create table t1 as
  2  select '--'        a
  3        ,rpad('-',2,'-') b
  4        ,'--'||to_char(null) c
  5        ,'--'||null d
  6    from dual;

Таблица создана.

SQL> desc t1
 Имя                                       Пусто?   Тип
 ----------------------------------------- -------- ------------
 A                                                  CHAR(2)
 B                                                  VARCHAR2(2)
 C                                                  VARCHAR2(2)
 D                                                  VARCHAR2(2)
Elic
Дата: 23.11.2009 11:51:32
+
substr('--', 1)
orawish
Дата: 23.11.2009 12:12:30
decode(1,1,'--')
:)

и ~такой казалось бы маразм бывает востребован, например, когда длину считать
лениво (и ошибиться же, опять таки ж можно)
ну и cast - зверушка с фантазией (во всяком случае, бывала stff )