Oracle 實現查詢不區分大小寫 設定資料庫

2021-09-19 08:17:24 字數 4473 閱讀 2284

查詢資料的時候。

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

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

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

首先是測試表/資料

sql>

create

table tab ( id int,val varchar2(10));

表已建立。

sql>

insert

into tab values (1, '

abc123

'),(2, '

abc234

'),(3, '

abc345

'),(4, '

abc456

'),(5, '

abc567

')

已建立5行。

=操作的例子

sql>

select

*from tab where val =

'abc123

';

無查詢結果

sql>

select

*from tab where val =

'abc123

';

查詢結果

id val

1abc123

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

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

sql>

alter session set nls_comp=ansi;

會話已更改。

sql>

alter session set nls_sort=binary_ci;

會話已更改。

sql>

select

*from tab where val =

'abc123

';

id val

1abc123

like操作的例子

sql>

select

*from tab where 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

*from tab where regexp_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

*from tab where regexp_like (val, '

^a');

id val

2 abc234

4 abc456

5 abc567

alter session set …之後

sql>

select

*from tab where regexp_like (val, '

^a');

id val

1 abc123

2 abc234

3 abc345

4 abc456

5 abc567

排序的例子

sql>

select

*from tab order

by 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

*from tab order

by val;

id val

1 abc123

2 abc234

3 abc345

4 abc456

5 abc567

關於中文漢字的排序

sql>

truncate

table tab;

表被截斷。

sql>

insert

into

tab

select

1, '一'

from dual union

allselect

2, '二'

from dual union

allselect

3, '三'

from dual union

allselect

4, '四'

from dual union

allselect

5, '五'

from

dual;

已建立5行。

sql>

commit

;提交完成。 --

按照拼音來排序

sql>

select

*from tab order

by nlssort(val, '

nls_sort=schinese_pinyin_m');

id val

---------- ----------2二

3三4四

5五1一

--按照筆畫數來排序

sql>

select

*from tab order

by nlssort(val, '

nls_sort=schinese_stroke_m');

id val

---------- ----------1一

2二3三

5五4四

--按照偏旁部首來排序

sql>

insert

into

tab

select

6, '人'

from dual union

allselect

7, '十'

from dual union

allselect

8, '土'

from dual union

allselect

9, '士'

from

dual;

已建立4行。

sql>

commit

;提交完成。

sql>

select

* from

tab

order

by nlssort(val, '

nls_sort=schinese_radical_m');

id val

---------- ----------1一

2二3三

5五6人

7十4四

8土9士

已選擇9行。

posted @

2017-07-11 17:04

wdmiye 閱讀(

...)

編輯收藏

oracle查詢表名,不區分大小寫

示例 select table name,tablespace name,temporary from user tables where table name like prov 分析 table name 表名 varchar2 30 tablespace name 儲存表名的表空間 varch...

mogodb不區分大小寫查詢

如果檢索需要不區分大小寫,我們可以設定 options 為 i。以下命令將查詢不區分大小寫的字串 runoob db.posts.find 集合中會返回所有包含字串 runoob 的資料,且不區分大小寫 我在springboot專案使用mogodb 1 引入jar包 org.springframew...

mysql查詢不區分大小寫

摘自 當我們輸入不管大小寫都能查詢到資料,例如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件對大小寫不敏感。解決方案一 於是懷疑mysql的問題。做個實驗 直接使用客戶端用sql查詢資料庫。發現的確是大小不敏感 通過查詢資料發現需要設定collate 校對 collate規則 b...