간단한 sql질문이요.
안녕하세요.
지금 sqlplus이용해서 자습을 하고 있는 대학생입니다. 하는중에 너무 답답해서 여기에 한번 여쭤봅니다.ㅜㅜ
먼저 주어진sql파일에 보면 아래와 같은 형식으로 자료들이 들어가 있습니다.
INSERT INTO Orders (OrderID, ClientID, EmployeeID, OrderDate, ShipCountry) VALUES
(10249, 'TOMSP', 6, TO_DATE('1996-07-05 00:00:00','YYYY-MM-DD HH24:MI:SS'), 'Germany');
문제가 'List the IDs of the products shipped to USA in May 1998.' 입니다.
그래서 제가 이런식으로 짜봤는데요.
SQL> select order_product.productid
2 from order_product,orders
3 where orders.orders=order_product.orderid and
4 orders.shipcountry='USA' and
5 orders.orderdate='1998-05-%';
이때 아래와 같이 에러메세지가 나오는데 어떻게 써야할지 찾아도 모르겠어서 여기에 여쭤봅니다.
orders.orderdate='1998-MAY-%'
*
ERROR at line 5:
ORA-01861: literal does not match format string
그리고! 제가 공부하는 책자에 보면
select c.clientid
from clients as c
이런식으로 써서 단축해서? 쓰던데요. 제가 할때는 as 땜에 에러가 나는데 왜그런지 이유를 알 수 있을까요?
아래와같이 하는건 잘 출력됩니다..(에러없이.)
select clientid as c_id
from clients
조언이라도 해주시면 감사하겠습니다!!
오라클 만져본 지 오래되어 기억이 좀 흐립니다만,
[1] Order 테이블의 OrderDate 컬럼은 date 타입으로 보이는데,
orders.orderdate='1998-05-%' 식으로 varchar 컬럼 다루듯 조건을 거셨네요.
(게다가, 만약 OrderDate 컬럼이 varchar 타입이었다고 해도, '%' 나 '_' 같은 와일드카드를 쓸 때는
OrderDate LIKE '1998-05-%' 와 같이 '=' 이 아닌 'LIKE' 연산자를 쓰셔야 합니다)
여러 가지 방법이 있겠지만, 아래와 같이 하실 수 있습니다.
[2] 오라클에서는 컬럼 alias에는 as를 써도 되고 안 써도 됩니다만
테이블 alias에는 as를 허용하지 않는 모양입니다. as를 빼고 하시면 됩니다.
(참고로, PostgreSQL에서는 컬럼/테이블 alias 모두에 AS를 써도 되고 안 써도 되더군요)
감사합니다!
감사합니다. 빼고하니까 잘되는군요!!
댓글 달기