sql developer 에서 문자열에 & 를 입력하여 쿼리를 실행하는데

파라미터 값을 넣으라고 입력창이 뜬다.

set define off 를 실행하면 쿼리가 문자열로 실행된다.

sql > set define off

이후 다시 파라미터를 이용하려면

set define on 을 실행하면 된다.

노트북에 SSD만 설치해 놓으니 항상 하드가 모자라다.

오늘은 내 PC에 테스트 용으로 설치된 오라클을 삭제해야 겠다.


윈도우키+R 을 눌러 실행창에서 services.msc 를 입력하여 서비스를 실행한다.






서비스에서 오라클 관련 서비스를 중지한다.



프로그램 > 오라클 > 오라클 설치제품 > 인스톨러를 실행한다.



설치해제를 클릭



오라클11ghome을 선택하고 제거버튼을 클릭



이런 알림창이 뜬다.



창을 드래크해서 늘려보면 

오라클 홈에 있는 인스톨러 명령을 실행하라는 이야기다.



각자 자기의 오라클 홈 경로로 이동해서

deinstall.bat 파을을 실행한다.

실행은 관리자 권한으로 실행해 주자.



해제할 리스너를 지정하자는 데에서 그냥 엔터치고 넘어가자.




데이터베이스 이름은 표기된 대로 ORCL을 입력하고 엔터.



세부정보는 수정할필요없으므로 n 엔터



계속 하시겠습니까? 에서 y를 입력하고 엔터.



몇분후 CMD창이 닫히면 오라클 홈 폴더를 삭제합니다.




서비스에서 확인해 보면 Oracle관련 서비스가 삭제된 것을 확인 할수 있다.



레지스트리까지 지우고 싶으면


실행창에서 regedit 입력


HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 삭제

HKEY_LOCAL_MACHINE\SYSEM\ControlSet001\Service 에서 Oracle 포함 삭제

HKEY_LOCAL_MACHINE\SYSEM\ControlSet002\Service 에서 Oracle 포함 삭제

HKEY_LOCAL_MACHINE\SYSEM\CurrentControlSet\Services 에서 Oracle 포함 삭제

HKEY_CLASSES_ROOT 에서Oracle과 Ora로 시작되는 것 삭제


과정을 거치면 된다.


오라클 함수중에 trim,ltrim,rtrim 이 있습니다.

ltrim과 rtrim 함수를 포함한 것이 trim함수라고 생각할수도 있겠지만
정확하게는 그렇지 않습니다.

우선 일반적으로 알고 있는 ltrim,rtrim,trim 에 대한 사용용도 입니다.



select ltrim('aabacdbaeaa' , 'a') from dual;
==>bacdbaeaa

select trim(leading 'a' from 'aabacdbaeaa') from dual;
==>bacdbaeaa



select rtrim('aabacdbaeaa' , 'a') from dual;
==>aabacdbae

select trim(trailing 'a' from 'aabacdbaeaa') from dual;
==>aabacdbae


select trim(both 'a' from 'aabacdbaeaa') from dual; ( = select trim('a' from 'aabacdbaeaa') from dual;)
==>bacdbae


위 쿼리들은 모두 왼쪽이든 오른쪽이든 양쪽이든 'a' 라는 문자를 없애는 쿼리 입니다.

그럼 스페이스를 없애는 쿼리는 ...예 간단하게 'a' 부분을 ' ' 처럼 빈 공간을 넣거나 아니면 
더 간단히 trim source만 입력하면 됩니다.

select trim(both ' ' from ' aabacdbaeaa ') from dual; ( = select trim(' aabacdbaeaa ') from dual;)
==>aabacdbaeaa

select ltrim(' aabacdbaeaa ',' ') from dual; (select ltrim(' aabacdbaeaa ') from dual;)
==>aabacdbaeaa_ (_는 빈 공간입니다.)

select rtrim(' aabacdbaeaa ',' ') from dual; (select rtrim(' aabacdbaeaa ') from dual;)
==>_aabacdbaeaa (_는 빈 공간입니다.)

그럼 trim source 나 trim set 중에 하나가 null 인 경우는 어떤 값을 리턴할까요..
예 바로 null을 리턴합니다.

아래 쿼리 모두 결과값은 'IS NULL' 입니다.

select Nvl( trim('' from 'abc'),'IS NULL') from dual;
select Nvl( trim('a' from ''),'IS NULL') from dual;
select Nvl( trim('' from ''),'IS NULL') from dual;
select Nvl( trim(''),'IS NULL') from dual;
select Nvl( ltrim('abc',''),'IS NULL') from dual;
select Nvl( ltrim('','a'),'IS NULL') from dual;
select Nvl( ltrim('',''),'IS NULL') from dual;
select Nvl( ltrim(''),'IS NULL') from dual;

==> IS NULL

그럼 ltrim,rtrim 과 trim의 결정적인 차이점은 무엇일까요..
바로 trim set 의 글자수 제한입니다.

trim 함수에 적용해 보면 다음과 같은 에러가 납니다.
SQL> select Nvl( trim('abc' from 'abc'),'IS NULL') from dual;
select Nvl( trim('abc' from 'abc'),'IS NULL') from dual
            *
ERROR at line 1:
ORA-30001: trim set should have only one character

only one 이라는 군요..

그럼 ltrim 함수에 적용해 보면 어떨까요.

select Nvl( ltrim('abc','abc'),'IS NULL') from dual;
==> IS NULL

여러문자도 가능하군요..

그럼 아래의 쿼리는 

select Nvl( ltrim('abcbaaaabbbbccccaaabbbccc','abc'),'IS NULL') from dual;
==> IS NULL

baaaabbbbccccaaabbbccc 이 아닌 null이네요..

즉 ltrim,rtrim 의 trim set 은 여러 문자가 가능하고..
여러 문자인 경우는 각각의 하나의 문자가 해당되는경우 없애준다라는 의미입니다.
즉 위 예에서는 왼쪽이 a이거나 b이거나 c면 없앤다..
다시 왼쪽이 a이거나 b이거나 c면 없앤다..
왼쪽이 a이거나 b이거나 c면 없앤다..
이런 작용이 왼쪽 첫 문자가 a도 아니고 b도 아니고 c도 아닐때 까지 작용하는 것입니다.











+ Recent posts