我查看了许多合并列问题,但未能找到解决我的特定问题的问题。我正在为学校做一个项目,我已经完成了大部分工作,但我仍然坚持这个问题的一小部分。
基本上,我在我创建的表上运行DESCRIBE命令并获得此结果:
Name Null? Type
----------------------------------------- -------- ------------
COURSEID NOT NULL VARCHAR2(7)
COURSE_NAME NOT NULL VARCHAR2(35)
STUDENT_COUNT NUMBER(5)
我需要做的是使用USER_TAB_COLS数据字典重新创建此结果。这是我到目前为止所得到的结果:
select column_name "Name",
replace(replace(nullable, 'N', 'NOT NULL'), 'Y') "Null?",
(data_type || '(' || data_length || ')') "Type"
from user_tab_cols
where column_name = 'COURSEID'
or column_name = 'COURSE_NAME'
or column_name = 'STUDENT_COUNT';
Name Null? Type
----------------------------------------- -------- ------------
COURSEID NOT NULL VARCHAR2(7)
COURSE_NAME NOT NULL VARCHAR2(35)
STUDENT_COUNT NUMBER(22)
我的问题在于STUDENT_COUNT行。 Type的值是错误的。另外两行需要组合DATA_TYPE和DATA_LENGTH列以获得正确的输出,但STUDENT_COUNT需要组合DATA_TYPE和DATA_PRECISION以获得正确的输出。我如何将不同的列组合成一个,具体取决于行?非常感谢任何帮助。
答案 0 :(得分:0)
修改它以使用如下所示的CASE语句:
select column_name "Name",
replace(replace(nullable, 'N', 'NOT NULL'), 'Y') "Null?",
(data_type || '(' || case
when data_type = 'NUMBER' then
data_precision
else
data_length
end || ')') "Type"
from user_tab_cols
where column_name = 'COURSEID'
or column_name = 'COURSE_NAME'
or column_name = 'STUDENT_COUNT';