[퀴즈] 한글퀴즈 - 명사에 목적격조사(을/를) 선택하여 붙여보자. 1 8 4,559

by 마농 한글유니코드 UNISTR ASCII [2010.10.26 14:50:11]


[퀴즈] 한글퀴즈 - 명사에 목적격조사(을/를) 선택하여 붙여보자.


예) 밥을 먹는다, 사과를 먹는다
위 예와 같이 밥에는 "을"이 붙고 사과에는 "를"이 목적격 조사로 붙게 됩니다.
이와 같이 주어진 단어에 대해 을/를 을 선택하는 쿼리를 작성해 보세요.


WITH t AS
(
SELECT '밥' v FROM dual
UNION ALL SELECT '빵' FROM dual
UNION ALL SELECT '사과' FROM dual
UNION ALL SELECT '과자' FROM dual
)
SELECT * FROM t
;


위 With문의 자료를 이용하여 다음결과를 도출하는 쿼리를 작성해 보세요.
[결과]

  V  목적격조사  주격조사1  주격조사2
사과
과자


[정답보기] <=== 트리플 클릭
SELECT v
    , DECODE(x, 0, '를', '을') 목적격조사
    , DECODE(x, 0, '는', '은') 주격조사1
    , DECODE(x, 0, '가', '이') 주격조사2
 FROM (SELECT v, MOD(ASCII(UNISTR(SUBSTR(v, -1))) - 44032, 28) x FROM t)
;

by 마농 [2010.10.26 17:43:20]

by v상이v [2010.10.27 14:06:13]
WITH T AS
(
SELECT '밥' V FROM DUAL
UNION ALL SELECT '빵' FROM DUAL
UNION ALL SELECT '사과' FROM DUAL
UNION ALL SELECT '과자' FROM DUAL
)
SELECT V
,DECODE(V1,'Y','를','을') "목적격조사"
,DECODE(V1,'Y','는','은') "주격조사1"
,DECODE(V1,'Y','가','이') "주격조사2"
FROM (
SELECT V
,CASE WHEN SUBSTR(V,LENGTH(V)) IN (SELECT NCHR(44032 + ((LEVEL-1) * 28)) FROM DUAL CONNECT BY LEVEL <= 399)
THEN 'Y'
ELSE 'N'
END V1
FROM T
)

by HYPNODISC [2010.10.27 18:54:23]

오라클 초보입니다; 격려해주시길 ㅠ;ㅋ


SELECT AAA.V || NVL2(MMM.AA,'는','은') AS A,
AAA.V || NVL2(MMM.AA,'를','을') AS B,
AAA.V || NVL2(MMM.AA,'가','이') AS C
FROM
(
WITH t AS
(
SELECT '밥' v FROM dual
UNION ALL SELECT '빵' FROM dual
UNION ALL SELECT '사과' FROM dual
UNION ALL SELECT '과자' FROM dual
)
SELECT V FROM T
)AAA LEFT OUTER JOIN (
SELECT V,AA FROM
(
WITH t AS
(
SELECT '밥' v FROM dual
UNION ALL SELECT '빵' FROM dual
UNION ALL SELECT '사과' FROM dual
UNION ALL SELECT '과자' FROM dual
)
SELECT SUBSTR(V,LENGTH(V),1) AS AA , V
FROM t
) AA
WHERE AA IN
(
SELECT NCHR((CEIL (LEVEL / 21) - 1) * C1 + MOD (LEVEL - 1, 21) * C2 + 0 + C0) ST
from (SELECT 588 C1, 28 C2, 44032 C0
FROM DUAL)
CONNECT BY LEVEL <= 21 * 19
)
)MMM
ON AAA.V = MMM.V

by 마농 [2010.10.28 09:49:29]
받침이 없는 글자들을 connect by level 절로 만들어 내서 비교하셨네요.
받침이 없는 글자들을 만들어 내는 규칙이 있다면?
반대로 이 규칙을 글자들을 만드는데 사용하지 않고 글자를 판별하는데 사용할 수도 있겠죠.
힌트는 태그에 넣었습니다.

by v상이v [2010.10.28 10:49:08]
아....딱 가려운곳을 찾아주듯...
태그...정말 감사합니다...
ASCII 값과 유니코드 값이랑 달라서 고민했던게...
UNISTR...함수 한방으로 딱! 해결이 되네요...^^;;;;;;
계속 고민했던 답이 나와서 너무 감사합니다~~

원하시는 답이 맞는진 모르겠습니다...

WITH T AS
(
SELECT '밥' V FROM DUAL
UNION ALL SELECT '빵' FROM DUAL
UNION ALL SELECT '사과' FROM DUAL
UNION ALL SELECT '과자' FROM DUAL
)
SELECT V
,DECODE(MOD(ASCII(UNISTR(SUBSTR(V,LENGTH(V)))) - ASCII(UNISTR('가')),28),0,'를','을') AS "목적격조사"
,DECODE(MOD(ASCII(UNISTR(SUBSTR(V,LENGTH(V)))) - ASCII(UNISTR('가')),28),0,'는','은') AS "주격조사1"
,DECODE(MOD(ASCII(UNISTR(SUBSTR(V,LENGTH(V)))) - ASCII(UNISTR('가')),28),0,'가','이') AS "주격조사2"
FROM T

by 호야 [2010.10.29 16:44:13]
허접한 답변입니다.

SELECT V
,DECODE(FLAG,0,'를','을') 목적격조사
,DECODE(FLAG,0,'는','은') 주격조사1
,DECODE(FLAG,0,'가','이') 주격조사2
FROM (SELECT v,MOD(ASCii(unistr(SUBSTR(v,-1)))-44032,28) flag
FROM t);

by jms [2010.11.09 16:07:38]
사과 - 을,은,이 가 나오는데요.. 저만 그런건가요?

by xo [2010.12.15 13:28:06]
jms님에 대한 답변입니다.
v뒤에 ' '가 들어가 있으면 그렇게 나오네요.
trim(v)로 제거해주시면 됩니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입