大文字、小文字や全角、半角を区別しないで検索する (NLSSORT 関数)

大文字、小文字だけの区別であれば UPPER や LOWER、全角、半角だけの区別であれば TO_MULTI_BYTE や TO_SINGLE_BYTE を使用することで検索することができる。
しかし、NLSSORT 関数を使用することによって、より見やすく簡単に実現できる。

各言語サポートソート (NLSSORT) 関数は検索条件に使用することで辞書ワード検索に使用することが可能である。

要注意:但し、10g R1 時点において大文字、小文字や全角、半角に関する区別はおおよそ吸収されるものの、全角カナと半角カナの差異は完全には吸収されていない(半濁点、濁点を含むカタカナ)ので注意する(これが正しい仕様ではない気がする)。
また NLS_COMP と NLS_SORT の NLS パラメータ を設定することによってオプティマイザによるアクセスパスがパフォーマンスに影響が出るくらいに大きく変化することにも注意を払う必要がある。

NLS_SORT パラメータと NLS_COMP パラメータ

  • BINARY、BINARY の組み合わせ
NLS_COMP='binary'
NLS_SORT='BINARY' の場合 (デフォルト)
--
SELECT ALPHA_TEXT FROM ALPHA_TBL WHERE ALPHA_TEXT = 'a';
 
ALPHA_TEXT
----------------------------------------
a
  • ANSI と JAPANESE_M_CI (JAPANESE_M) の組み合わせ
NLS_COMP='ansi'
NLS_SORT='JAPANESE_M_CI' の場合
ALTER SESSION SET NLS_COMP='ansi';
-- JAPANESE_M_CI ( Oracle 10g 〜)
ALTER SESSION SET NLS_SORT='JAPANESE_M_CI';
--
SELECT ALPHA_TEXT FROM ALPHA_TBL WHERE ALPHA_TEXT = 'a';
 
ALPHA_TEXT
----------------------------------------
a
A
a
A

NLSSORT 関数と NLS_SORT パラメータと NLS_COMP パラメータ

上記の SQL は以下の文と同じ意味になる。

ALTER SESSION SET NLS_COMP='binary';
ALTER SESSION SET NLS_SORT='BINARY';
--
SELECT
	ALPHA_TEXT
FROM ALPHA_TBL
WHERE
	NLSSORT(ALPHA_TEXT,'NLS_SORT=JAPANESE_M_CI')=NLSSORT('a','NLS_SORT=JAPANESE_M_CI');
 
ALPHA_TEXT
----------------------------------------
a
A
a
A

参考 ⇒ NLSSORT 関数

テストデータの構築スクリプト

CREATE TABLE RIVUS.ALPHA_TBL
(
	ALPHA_TEXT	VARCHAR2(20)
);
-- 半角 A
INSERT INTO ALPHA_TBL VALUES('a');
INSERT INTO ALPHA_TBL VALUES('A');
-- 全角 A
INSERT INTO ALPHA_TBL VALUES('a');
INSERT INTO ALPHA_TBL VALUES('A');
COMMIT;


関連事項

カスタム検索
スポンサード リンク

全角・半角、大文字・小文字を区別しない検索の関連トピックス

ITエンジニア キャリアアップ・転職・求人情報

■ フリーランスから独立開業、会社設立へ

■ 国内最大級の転職支援サービス

Oracle & IT技術者 専門書

続・門外不出のOracle現場ワザ (DB SELECTION)
価格: 2,940 円 (税込)
新品/ユーズド価格: 2,940 円 より
リリース: 2006-09-21
ユーザーレビュー: 2 件

ORACLE MASTER Bronze SQL 基礎1模擬問題集
価格: 2,730 円 (税込)
新品/ユーズド価格: 1,500 円 より
リリース: 2005-06
ユーザーレビュー: 4 件

徹底攻略 ORACLE MASTER Bronze DBA11g問題集 [1Z0-018J]対応 (I
価格: 3,150 円 (税込)
新品/ユーズド価格: 3,150 円 より
リリース: 2008-07-25

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ 会員制(無料)の公式技術サイト