Database/SQL

[Oracle] μ—°μ‚°μž μš°μ„ μˆœμœ„

μ±”πŸ» 2022. 1. 17. 17:37

μ—°μ‚°μž μš°μ„ μˆœμœ„

μš°μ„ μˆœμœ„ μ—°μ‚°μž
1 μ‚°μˆ μ—°μ‚°μž (*, /, +, -)
2 μ—°κ²° μ—°μ‚°μž (
3 λΉ„κ΅μ—°μ‚°μž ( <, >, ≤, ≥, <>, = )
4 IS NULL, LIKE, IN
5 BETWEEN
6 NOT 논리 μ—°μ‚°μž
7 AND 논리 μ—°μ‚°μž
8 OR 논리 μ—°μ‚°μž

이걸 λͺ°λΌμ„œ 3μ‹œκ°„μ΄λ‚˜ μ‚½μ§ˆμ„ ν•œ 적이 μžˆμ—ˆλ‹€.

ORA-01843: not a valid month λΌλŠ” μ—λŸ¬κ°€ μžκΎΈ λ°œμƒν–ˆλ‹€

 

ORA-01843: μ§€μ •ν•œ 월이 λΆ€μ ν•©ν•©λ‹ˆλ‹€.

ORA-01843: not a valid month

SELECT *
  FROM PRODUCT P
WHERE UPPER(P.PANME) LIKE UPPER('%ν…ŒμŠ€νŠΈ%')
  AND SYSDATE BETWEEN TO_DATE(CONCAT(NVL(P.SDATE,'20000101'), '000000'), 'YYYYMMDDHH24MISS') AND TO_DATE(CONCAT(NVL(P.EDATE,'20991231'),'235959'), 'YYYYMMDDHH24MISS');

μƒν’ˆμ˜ 이름이 'ν…ŒμŠ€νŠΈ' && κ²Œμ‹œμ‹œμž‘μΌ < SYSDATE < κ²Œμ‹œμ’…λ£ŒμΌ 

μœ„ 두 쑰건을 λ§Œμ‘±ν•΄μ•Ό 값이 λ‚˜μ˜¨λ‹€.

원인은 TO_DATE() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ”λ° 잘λͺ»λœ 데이터가 λ“€μ–΄μ˜€κ³  μžˆμ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

 

SELECT *
  FROM PRODUCT P
WHERE UPPER(P.PANME) LIKE UPPER('%ν…ŒμŠ€νŠΈ%');

λ‚ μ§œ BETWEEN μ‘°κ±΄μ„ μ£Όμ„μ²˜λ¦¬ν•˜κ³  LIKE μ‘°κ±΄λ§Œ κ±Έμ—ˆμ„ λ•ŒλŠ” λ¬Έμ œμ—†μ΄ λ‚˜μ™€μ„œ P.SDATE와 P.EDATE λ°μ΄ν„°μ— λ­”κ°€ λ¬Έμ œκ°€ μžˆμ–΄ κ·ΈλŸ° κ²ƒ κ°™μ•„
AND UPPER(P.B) LIKE UPPER('%ν…ŒμŠ€νŠΈ%') μ‘°κ±΄λ§Œ κ±Έκ³  P.SDATE와 P.EDATE μ»¬λŸΌμ„ μΆœλ ₯ν•΄λ³΄μ•˜λŠ”λ° μ „ν˜€ λ¬Έμ œλ λ§Œν•œ λ°μ΄ν„°κ°€ λ“€μ–΄κ°€μžˆμ§€ μ•Šμ•˜λ‹€...

ν˜Ήμ‹œλ‚˜ν•΄μ„œ λ°μ΄ν„°μ˜ 길이가 λ§žμ§€ μ•ŠλŠ” 데이터가 μžˆλ‚˜ ν•΄μ„œ 쑰회λ₯Ό 해보앗따.

SELECT LENGTH(SDATE)
  FROM PRODUCTS P
GROUP BY LENGTH(SDATE);

κ·Έ ν˜Ήμ‹œλ‚˜κ°€ μ—­μ‹œλ‚˜μ˜€λ‹€. 

10자리둜 λ‚˜μ˜€λŠ” 데이터듀에 λ³΄λ‹ˆκΉŒ ν•˜μ΄ν”ˆμ΄ λ“€μ–΄κ°€μžˆμ–΄μ„œ TO_DATE둜 λ³€ν™˜ν•˜λŠ” κ³Όμ •μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•œ κ²ƒμ΄μ˜€λ‹€ γ…Ž..

μ²˜μŒμ—” WHERE λ¬Έμ—μ„œ 데이터λ₯Ό κ°„μΆ”λ¦¬λŠ” μˆœμ„œκ°€ λ‚˜λŠ” λ‚˜μ—΄ μˆœμ„œμΈ 쀄 μ•Œκ³  μžˆμ–΄μ„œ μ΄κ²Œμ™œ??? μ–΄μ°¨ν”Ό AND UPPER(P.B) LIKE UPPER('%ν…ŒμŠ€νŠΈ%')  μ‘°κ±΄μ—μ„œ κ±ΈλŸ¬μ§€λŠ” 데이터듀이라 상관없지 μ•Šλ‚˜??? ν•˜κ³  μ§„μ§œ 이해가 μ•ˆ λμ—ˆλŠ”λ°

μ•Œκ³ λ³΄λ‹ˆ μ—°μ‚°μž μš°μ„ μˆœμœ„λ₯Ό 톡해 쑰건의 결과에 λ§žλŠ” 데이터λ₯Ό 가져와 

 

μ•Œκ³ λ³΄λ‹ˆ WHERE λ¬Έμ—μ„œ 데이터λ₯Ό κ°„μΆ”λ¦¬λŠ” μˆœμ„œκ°€ λ‚˜λŠ” λ‚˜μ—΄ μˆœμ„œμΈ 쀄 μ•Œμ•˜λŠ”λ°

그게 μ•„λ‹ˆλΌ μ—°μ‚°μž μš°μ„ μˆœμœ„λ₯Ό 톡해 쑰건의 결과에 λ§žλŠ” 데이터λ₯Ό κ°€μ Έμ˜€λŠ” κ²ƒμ΄μ˜€λ‹€.
쑰건을 κ±Έμ—ˆμœΌλ‹ˆ 'ν…ŒμŠ€νŠΈ'λΌλŠ” λ¬Έμžμ—΄μ΄ ν¬ν•¨λœ λ°μ΄ν„°λ§Œ κ°€μ Έμ™€μ„œ κ·Έ λ°μ΄ν„°μ˜ P.SDATE와 P.EDATE 쑰건을 또 ν•„ν„°λ₯Ό κ±Έ 쀄 μ•Œμ•˜λ‹€.

μ†”μ§νžˆ μ±…μ—μ„œ ν•œλ²ˆ γ…‡γ…Ž 이런게 있ꡰ 이러고 λ„˜μ–΄κ°€κ³  λ‹€μ‹  보지도 μ•Šμ•˜λ˜κ±΄λ° γ…‹γ…‹γ…‹ 이걸 λͺ°λΌμ„œ 3μ‹œκ°„μ΄λ‚˜ μ‚½μ§ˆμ„ ν•  쀄이야 γ… ..