轉
查詢資料的時候。
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...