表的DDL:
CREATE TABLE "AUTH_USER_REGISTRATION"
( "USER_ID" NUMBER(*,0),
"USER_NAME" VARCHAR2(200 BYTE),
"MAIL" VARCHAR2(400 BYTE),
"FULLNAME" VARCHAR2(200 BYTE),
"GENDER" VARCHAR2(50 BYTE),
"USER_DAY" VARCHAR2(10 BYTE),
"USER_MONTH" VARCHAR2(50 BYTE),
"USER_YEAR" VARCHAR2(50 BYTE),
"CREATED" NUMBER(38,0),
"STATUS" VARCHAR2(10 BYTE),
"UU_ID" VARCHAR2(100 BYTE),
"MOBILE" VARCHAR2(100 BYTE),
"CHANGED" NUMBER(38,0)
);
插入语句:
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (914981,'srik1977@gmail.com','srikes1977@gmail.com','Birendra Mohan',null,'05','March','1977',1412433302,'1','69945218-cc7f-46f5','9471067',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (916653,'mah@gmail.com','mahe@gmail.com','MAHESH DEOCHAKE','male','18','July','1989',1412439002,'1','4563adc0-345b-4779-a8ee','7709910',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (916665,'hars@hotmail.com','haveri@hotmail.com','Harshal Jhaveri',null,'08','May','1992',1412439002,'1','a10a3f0c-5892-4579-aef6-46a','8568013',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (890991,'gu1952@gmail.com','gunran1952@gmail.com','subramani gunasekaran','male','17','October','1950',1412358602,'1','6b4c7077-8864-4702-','44697999',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (891053,'amini@gmail.com','amihani@gmail.com','AMIR RANJAN DHANI','male','20','August','1992',1412358602,'1','62dd0cb4-c86b-4634-ba6','9432880',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (891055,'pringhc0@gmail.com','pravghc0@gmail.com','Praveen Singh Chouhan','male','10','April','1990',1412358602,'1','037f1079-db85-49d7','04663542',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (892719,'badkt@yahoo.com','bammadkt@yahoo.com','Muhammed Basheer','male','05','July','1994',1412362502,'1','10c07ce7-badf-4204-b2a9','7232903',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (892729,'swaar@gmail.com','swnwar@gmail.com','swapnil papinwar','male','08','September','1986',1412362502,'1','2f8940ef-3136-425','9818122',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (896209,'raj@yahoo.com','rajan@yahoo.com','Rajiv Nayan','male','10','June','1969',1412388301,'1','8008f636-916b-4982-baad-','9810769',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (465,'Jaysparikh','jay@gmail.com','Jay Parikh','male','31','January','1984',1406359580,'1','c04b7129-b04e-4ca5-9199-','9586817',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (476,'sknyer','sknr@gmail.com','Sasidharan Nair','male','26','October','1968',1406359591,'1','69288f05-bfbb-4f5e-9561-71e','530154',null);
Insert into AUTH_USER_REGISTRATION (USER_ID,USER_NAME,MAIL,FULLNAME,GENDER,USER_DAY,USER_MONTH,USER_YEAR,CREATED,STATUS,UU_ID,MOBILE,CHANGED) values (504,'casstifer','sir@gmail.com','Aditya Verma','male','25','December','1995',1406359633,'1','a4e8ad7b-a5f8-476b-a779-','742842',null);
质询:
SELECT
user_id as user_id,
user_name as user_name,
mail as user_mail,
fullname as full_name,
case when (gender='male' or gender='mail' or gender='Male') then 'Male'
when (gender='female' or gender='Female') then 'Female' else 'Others'
end as gender,
case
when user_month='January' then '1'
when user_month='February' then '2'
when user_month='March' then '3'
when user_month='April' then '4'
when user_month='May' then '5'
when user_month='June' then '6'
when user_month='July' then '7'
when user_month='August' then '8'
when user_month='September' then '9'
when user_month='Ocotober' then '10'
when user_month='November' then '11'
when user_month='December' then '12'
end user_month,
case
when (user_day is not null or user_day<>'') and (user_month is not null or user_month<>'') and (user_year is not null or user_year<>'')
then user_day ||'-' || user_month ||'-' || user_year else '' end as dob,
created,
status as status,
uu_id as uuid,
mobile as mobile,
changed
FROM
auth_user_registration;
型
我需要将user_day
、user_month
和user_year
合并为一列,格式如下(01-01-2022),当前格式为(01-January-2022)。请帮助我完成此操作。
2条答案
按热度按时间5vf7fwbs1#
首先,我得说你做错了。你应该把日期存储为日期(放入
DATE
数据类型列中),而不是将天/月/年单独放入它们自己的列中,并且无法控制它。如果您输入'Janiary'呢?这显然是 January,但是-要识别它-您必须将(很大的努力?)或者,为什么不是84?84-Janiary-2022;看起来不太好。总之:
to_date
函数,格式模型适当to_char
应用于该DATE
数据类型值我建议采取以下方法:
P.S.在使用Oracle时不要使用双引号;他们会带来麻烦。
balp4ylt2#
您已经有了一个case表达式来将月份名称转换为数字,但是您似乎希望在连接中引用
user_month
时使用该case的结果,因为您使用了相同名称的别名。您不能在定义列别名的同一查询级别中使用列别名(除非在order-by子句中),因此它仍然引用具有相同名称的原始表列-因此您看到的是月份名称。你需要把case表达式移到连接中,但是你也拼错了'October',在你的例子中你想要用零填充月份数字;一个简单的case表达式要比一个搜索表达式少输入一些,所以你可以这样做:
| 用户ID|用户名|用户_邮件|全名|性别|出生日期|创建|状态|通用唯一标识符|移动的|变更|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 小行星914981| srik1977@gmail.com | srikes1977@gmail.com|比兰德拉·莫汉|其他|一九七七年三月五日|小行星14124| 1个|编号69945218-CC 7 F-46 F5|小行星947| * 无效 *|
| 小行星916653| mah@gmail.com | mahe@gmail.com|马赫什·德奥恰克|男性|一九八九年七月十八日|小行星1412439| 1个|小行星4563|小行星7709910| * 无效 *|
| 小行星916665| hars@hotmail.com | haveri@hotmail.com|哈尔沙尔·贾韦里|其他|一九九二年五月八日|小行星1412439| 1个|三氟甲磺酸|小行星8568013| * 无效 *|
| 小行星890991| gu1952@gmail.com | gunran1952@gmail.com|苏布拉马尼古纳塞卡兰|男性|一九五○年十月十七日|小行星141235| 1个|6b4c7077-8864-4702-|小行星44697| * 无效 *|
| 小行星891053| amini@gmail.com | amihani@gmail.com|阿米尔·兰詹·达尼|男性|一九九二年八月二十日|小行星141235| 1个|62 dd 0 cb 4-c86 b-4634-巴6|小行星9432880| * 无效 *|
| 小行星89| pringhc0@gmail.com | pravghc0@gmail.com|普拉温·辛格·乔汉|男性|一九九○年四月十日|小行星141235| 1个|037 f1079-数据库85 - 49 d 7| 04663542| * 无效 *|
| 小行星892| badkt@yahoo.com | bammadkt@yahoo.com|穆罕默德·巴舍尔|男性|一九九四年七月五日|小行星14| 1个|10 c 07 ce 7-巴德夫-4204-b2 a9|小行星7232903| * 无效 *|
| 小行星892729| swaar@gmail.com | swnwar@gmail.com|斯瓦普尼勒帕平瓦尔|男性|一九八六年九月八日|小行星14| 1个|2f 8940 ef-3136-425型|小行星98| * 无效 *|
| 小行星896209| raj@yahoo.com | rajan@yahoo.com|拉吉夫·纳扬|男性|一九六九年六月十日|小行星14123| 1个|8008 f636 - 916 b-4982-巴德-|小行星9810769| * 无效 *|
| 四六五|贾伊斯帕里克|jay@gmail.com|杰伊·帕里克|男性|一九八四年一月三十一日|小行星140635958| 1个|编号:c 04 b7129-b 04 e-4ca 5 -9199-|小行星9586817| * 无效 *|
| 四百七十六|斯涅尔|sknr@gmail.com|萨西达兰·奈尔|男性|一九六八年十月二十六日|小行星1406359591| 1个|69288 f05-苯并呋喃-4f5e-9561- 71 e|小行星530154| * 无效 *|
| 小行星504|卡斯蒂费尔|sir@gmail.com|阿迪蒂亚·维尔马|男性|一九九五年十二月二十五日|小行星140635| 1个|阿4 e8 ad 7 b-a5 f8 - 476 b-a779-|小行星742842| * 无效 *|
fiddle
不过请注意,如果您有一个月份名称不在列表中,或者拼写错误,或者使用了不同的(印刷)大小写(例如,全部小写,'january'),那么case表达式将计算为null,所以您可能会以类似
84--2022
的结果结束,借用Littlefoot的例子。但是,如Littlefoot所示,转换为日期或从日期转换,或者遵循常规做法,只存储单个日期值而不是三个独立的字符串值,这会更简单,原因已经给出。