select 基本语法作业
问题:(https://www.modb.pro/db/26443)
如下是BOOKS_TRANSACTIONS表的结构:
DESC BOOKS_TRANSACTIONS
TRANSACTION_ID NOT NULL VARCHAR2
BORROWED_DATE DATE
DUE_DATE DATE
BOOK_ID VARCHAR2
MEMBER_ID VARCHAR2 (6)
需求:打印输出BOOKS_TRANSACTIONS表的MEMBER_ID,DUE_DATE的信息以字符’$2’作为LATE_FEE信息。如下哪个SQL是正确的?
A) SELECT member_id AS MEMBER_ID, due_date AS DUE_DATE, $2 AS LATE_FEE FROM BOOKS_TRANSACTIONS;
B) SELECT member_id AS “MEMBER_ID”, due_date AS “DUE_DATE”, ‘$2’ AS " LATE_FEE” FROM BOOKS_TRANSACTIONS;
C) SELECT member_id AS “MEMBER_ID”, due_date AS “DUE_DATE”, $2 AS “LATE_FEE” FROM BOOKS_TRANSACTIONS;
答案为B
解答:对于A、C,$2没有加’’,执行将会报错;
实验验证:
建表:
create table BOOKS_TRANSACTIONS (
TRANSACTION_ID VARCHAR2(10) NOT NULL ,
BORROWED_DATE DATE,
DUE_DATE DATE,
BOOK_ID VARCHAR2(10),
MEMBER_ID VARCHAR2(6));
插入数据:
insert into BOOKS_TRANSACTIONS values(‘10001’,to_date(‘2010-2-26 11:07:25’ , ‘yyyy-mm-dd hh24:mi:ss’),sysdate,‘b10001’,‘00001’);
insert into BOOKS_TRANSACTIONS values(‘10002’,to_date(‘2010-2-26 11:07:25’ , ‘yyyy-mm-dd hh24:mi:ss’),sysdate,‘b10002’,‘00002’);
检查:
针对A、C:
SELECT member_id AS MEMBER_ID, due_date AS DUE_DATE, $2 AS LATE_FEE FROM BOOKS_TRANSACTIONS;
SELECT member_id AS “MEMBER_ID”, due_date AS “DUE_DATE”, $2 AS “LATE_FEE” FROM BOOKS_TRANSACTIONS;
针对B:
SELECT member_id AS “MEMBER_ID”, due_date AS “DUE_DATE”, ‘$2’ AS “LATE_FEE” FROM BOOKS_TRANSACTIONS;
调整下格式,在" LATE_FEE"的L前增加空格,发现结果不一样,
SELECT member_id AS “MEMBER_ID”, due_date AS “DUE_DATE”, ‘$2’ AS " LATE_FEE" FROM BOOKS_TRANSACTIONS;
SELECT member_id AS “MEMBER_ID”, due_date AS “DUE_DATE”, '$2 ’ AS " LATE_FEE" FROM BOOKS_TRANSACTIONS;
发现如果别名开头有空格的话,结果将不一样,增加$2后面的空格,会逐渐显示完整,个人见解,不知是否正确。