轉http://blog.csdn.net/shl7765856/article/details/7622756
查詢數據的時候。
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
---------- ----------
1 ABC123
由上面的結果可以看出,默認情況下,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
---------- ----------
1 ABC123
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 ALL SELECT 2, '二' FROM DUAL UNION ALL SELECT 3, '三' FROM DUAL UNION ALL SELECT 4, '四' FROM DUAL UNION ALL SELECT 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 ALL SELECT 7, '十' FROM DUAL UNION ALL SELECT 8, '土' FROM DUAL UNION ALL SELECT 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行。