Oracle 大小寫區分的處理

2021-09-01 10:25:33 字數 4575 閱讀 3840

查詢資料的時候。

sql server 預設 不區分大小寫。 如果要區分,就要額外的設定。

oracle 預設 區分大小寫。如果不要區分,就要額外的設定。

下面就是 oracle 的明細部分了。

首先是測試表/資料

sql> create table tab (

2    id  int,

3    val varchar2(10)

4  );

表已建立。

sql> insert into tab

2    select 1, 'abc123' from dual union all

3    select 2, 'abc234' from dualunion all

4    select 3, 'abc345' from dual union all

5    select 4, 'abc456' from dualunion all

6    select 5, 'abc567' from dual;

已建立5行。

=操作的例子

sql> select

2    *

3  from

4    tab

5  where

6   val ='abc123';

未選定行

sql> select

2    *

3  from

4    tab

5  where

6   val ='abc123'

id val

1abc123

由上面的結果可以看出,預設情況下,oracle 大小寫敏感的。

下面通過設定環境變數,讓oracle對大小寫不敏感

sql>alter session set nls_comp=ansi;

會話已更改。

sql>alter session set nls_sort=binary_ci;

會話已更改。

sql> select

2    *

3  from

4    tab

5  where

6   val ='abc123';

id val

1abc123

like操作的例子

sql> select

2    *

3  from

4    tab

5  where

6   val like 'a%';

id val

2 abc234

4 abc456

5 abc567

預設是大小寫敏感。

sql>alter session set nls_comp=ansi;

會話已更改。

sql>alter session set nls_sort=binary_ci;

會話已更改。

會話更改以後,條件是  val = 的,可以實現大小寫不敏感

但是對於 val like 的查詢,還是大小寫敏感的。

解決辦法,使用正規表示式的方式來變通的處理。

sql> select

2    *

3  from

4    tab

5  where

6regexp_like(val, '^a', 'i');

id val

1 abc123

2 abc234

3 abc345

4 abc456

5 abc567

注1:regexp_like 的第3個引數'i' 表示大小寫敏感。

注2:對於環境變數nls_comp與nls_sort的設定,會影響regexp_like 執行的結果(假如第3個引數不填寫的話)。

預設情況下:

sql> select

2    *

3  from

4    tab

5  where

6regexp_like(val, '^a');

id val

2 abc234

4 abc456

5 abc567

alter session set …之後

sql> select

2    *

3  from

4    tab

5  where

6regexp_like(val, '^a');

id val

1 abc123

2 abc234

3 abc345

4 abc456

5 abc567

排序的例子

sql> select

2    *

3  from

4    tab

5  order by

6    val;

id val

1 abc123

3 abc345

4 abc456

5 abc567

2 abc234

預設排序為大小寫敏感

sql>alter session set nls_comp=ansi;

會話已更改。

sql>alter session set nls_sort=binary_ci;

會話已更改。

sql> select

2    *

3  from

4    tab

5  order by

6    val;

id val

1 abc123

2 abc234

3 abc345

4 abc456

5 abc567

關於中文漢字的排序

sql> truncate table tab;

表被截斷。

sql> 

sql> insert into tab

2    select 1, '一' from dual union all

3    select 2, '二' from dual union all

4    select 3, '三' from dual union all

5    select 4, '四' from dual union all

6    select 5, '五' from dual;

已建立5行。

sql> commit;

提交完成。

-- 按照拼音來排序

sql> select 

2    * 

3  from 

4    tab 

5  order bynlssort(val, 'nls_sort=schinese_pinyin_m');

id val

2 二3 三

4 四5 五

1 一-- 按照筆畫數來排序

sql> select 

2    * 

3  from 

4    tab 

5  order bynlssort(val, 'nls_sort=schinese_stroke_m');

id val

1 一2 二

3 三5 五

4 四-- 按照偏旁部首來排序

sql> insert into tab

2    select 6, '人' from dual union all

3    select 7, '十' from dual union all

4    select 8, '土' from dual union all

5    select 9, '士' from dual;

已建立4行。

sql> commit;

提交完成。

sql> select 

2    * 

3  from 

4    tab 

5  order bynlssort(val, 'nls_sort=schinese_radical_m');

id val

1 一2 二

3 三5 五

6 人7 十

4 四8 土

9 士已選擇9行。

區分大小寫

這個規則會與以下各個元素匹配 這些元素不能在同乙個文件中同時出現,因為它們都有相同的 id 值 id mostimportant this is important 親自試一試 請注意,類選擇器和 id 選擇器可能是區分大小寫的。這取決於文件的語言。html 和 xhtml 將類和 id 值定義為區...

區分大小寫

設定大sql指令碼大小寫敏感 use master go alter database databasename collate chinese prc cs ai go設定參考值 ci ai 不區分大小寫 不區分重音 不區分假名型別 不區分寬度 ci ai ws 不區分大小寫 不區分重音 不區分假...

ASP中的區分大小寫與不區分大小寫

asp中的變數,關鍵字不區分大小寫,這誰都知道。但在有些地方又是區分大小的。在下面這種密碼驗證時就不區分大小寫,這樣就增加了asp不安全因素 select from admin where username username and password password 這時的 password 的值...