73315


画面から入力されたIDを小文字だけで検索可能にしていますが、  
大文字でも検索できるようにしたいのですが、  
その場合抽出SQLのwhere句の条件を変えて大文字小文字区別なく検索できるようにすることは可能でしょうか？


CC BY-SA 4.0
2021-01-15T08:21:33.987
73314
2021-01-15T22:54:58.727
2021-01-15T22:54:58.727
4236
32774
question
sql oracle
sqlで大文字小文字区別なく検索できるようにできますか？


どのDBを使っているのかにより回答が変わりますが、以前Oracleタグが付いていたことがあるのでそれを前提に回答いたします。  
MySQLやPostgreSQLなどを使用している場合はタグを追加してください。

[本家SOの類似質問](https://stackoverflow.com/q/1031844)

大抵のDBには文字列を小文字に変換する関数があるので、それを使うことで対応可能です。  
下記はOracleのlower関数を使う例です。

[code]

    with TEST as (select 'abc' HOGE from dual union all select 'ABC' HOGE from dual union all select 'Abc' HOGE from dual)
    select *
    from TEST
    where lower(HOGE) = lower('ABC') # HOGEカラムが必ず小文字なら lower(HOGE) は HOGE のままで良い
    
[/code]

類似質問の回答のように、セッションのパラメータを設定することで大文字小文字を無視(Ignore Case)して検索できるようです。

[code]

    alter session set NLS_COMP=LINGUISTIC;
    alter session set NLS_SORT=BINARY_CI;
    
[/code]

version 10gR2の場合は下記のように設定します。

[code]

    alter session set NLS_COMP=ANSI;
    alter session set NLS_SORT=BINARY_CI;
    
[/code]


CC BY-SA 4.0
2021-01-15T08:42:09.073
73315
2021-01-15T08:42:09.073
9820
73314
answer