第2个回答 2013-04-01
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 DUAL UNION ALL
4 SELECT 3, 'Abc345' FROM DUAL UNION ALL
5 SELECT 4, 'aBC456' FROM DUAL UNION ALL
6 SELECT 5, 'aBc567' FROM DUAL ;
已创建5行。
Oracle 默认,大小写敏感
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 val LIKE 'a%';
ID VAL
---------- ----------
2 abc234
4 aBC456
5 aBc567
默认是大小写敏感。
解决办法,使用 正则表达式的方式来 变通的处理。
SQL> SELECT
2 *
3 FROM
4 tab
5 WHERE
6 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个参数不填写的话)。