2010-05-10 3 views
1

데이터를 대/소문자를 구분하지 않도록 설정하는 Oracle 10g 설정이 있습니까? 나는 해결책을 보았다 here. 그러나 이것은 세션에서 수행됩니다. 내가 찾고있는 것은 스키마 나 테이블에서 데이터를 대소 문자를 구분하지 않는 것으로 간주하는 설정이다. 그것이 세션에 있다면 나는 모든 저장 프로 시저를 변경해야 할 것입니다.Oracle에서 대/소문자를 구분하지 않는 방법

답변

2

스키마 또는 테이블을 '대소 문자를 구분하지 않음'옵션으로 설정할 수 없습니다.

  • 당신은 세션에 가 NLS_ 매개 변수를 사용하거나 전체 인스턴스가 영향을받는 DB 초기화 파일에서 같은 행동을 할 것을 할 수 있습니다.
    그러나 이러한 검색은 엄격한 일치 검색을 위해 대/소문자를 구분하지 않습니다 ().

  • 과 같이 사용할 필요가있는 경우을 사용하려면 REGEXP_LIKE를 사용해야합니다.
    REGEXP_LIKE의 경우 NLS_SORT 설정이 필요하지 않습니다. REGEXP_LIKE가 대소 문자를 구분하지 않도록하는 옵션이 있기 때문입니다.

+0

+1. 나는 당신의 회신을 구조화하는 자유를 취했다 .. – lexu

2

'yun'의 ASCII 값 = 'YUN'의 ASCII 값이라는 간단한 이유 때문에 대소 문자 구분이 컴퓨팅의 기본입니다. 그래서, 당신이 말할 때 ...

은 ... 대소 문자를 구분하지

로 데이터를 고려 방금 검색의 목적을 위해 또는 저장뿐만 아니라 의미합니까?

모든 검색에 케이스를 집행의 문제는 이것이다 :

SQL> create table t23 (id number, name varchar2(20)) 
    2/

Table created. 

SQL> create unique index t23_uk on t23(name) 
    2/

Index created. 

SQL> insert into t23 values (1, 'SAM-I-AM') 
    2/

1 row created. 

SQL> insert into t23 values (2, 'sam-i-am') 
    2/

1 row created. 

SQL> select id, name, ascii(name) from t23 
    2/

     ID NAME     ASCII(NAME) 
---------- -------------------- ----------- 
     1 SAM-I-AM      83 
     2 sam-i-am      115 

SQL> 

대소 문자 구분 검색은 우리가 이제까지의 'SAM-I-AM' '를 구별 할 수있는 방법 스키마 또는 테이블 수준에서 시행하는 경우 SAM- 나는'?

이 인 - 각 열 수준이기는하지만, 데이터 저장을 위해 대소 둔감성을 적용 할 수있다 - 일종의 : 답 배경

SQL> delete from t23 
    2/

2 rows deleted. 

SQL> drop index t23_uk 
    2/

Index dropped. 

SQL> create unique index t23_uk on t23(upper(name)) 
    2/

Index created. 

SQL> insert into t23 values (1, 'SAM-I-AM') 
    2/

1 row created. 

SQL> insert into t23 values (2, 'sam-i-am') 
    2/
insert into t23 values (2, 'sam-i-am') 
* 
ERROR at line 1: 
ORA-00001: unique constraint (APC.T23_UK) violated 


SQL> 
관련 문제