タイトルで書いたように、SQLクエリがあり、Oracle DBで実行します。
SELECT * FROM TABLE WHERE TABLE.NAME Like 'IgNoReCaSe'
クエリが「IGNORECASE」、「ignorecase」、またはそれらの組み合わせのいずれかを返すようにしたい場合、どのようにこれを行うことができますか?
これは可能ですか?
ALTER SESSION文を使用して、大文字と小文字を区別しない比較を設定できます。 このFAQ を参照してください。
alter session set NLS_COMP=ANSI;
alter session set NLS_SORT=BINARY_CI;
この元の回答が受け入れられてから8年後に訪問するすべての人(10gR2の場合):
10gR2の後、NLS_COMP
設定は「LINGUISTIC」である必要があります。
ALTER SESSION SET NLS_COMP=LINGUISTIC;
Select * from table where upper(table.name) like upper('IgNoreCaSe');
または、上部を下部に置き換えます。
Where条件の両側でlowerまたはupper関数を使用できます
正規表現も使用できます。
SELECT * FROM TABLE WHERE REGEXP_LIKE (TABLE.NAME,'IgNoReCaSe','i');
クエリでupper()関数を使用できます。パフォーマンスを向上させるには、関数ベースのインデックスを使用できます
CREATE INDEX upper_index_name ON table(upper(name))
upper
またはlower
関数を使用して、両方の値を大文字または小文字に変換できます。
Select * from table where upper(table.name) like upper('IgNoreCaSe') or lower(table.name) like lower('IgNoreCaSe');
...クエリの外部で上位または下位への変換も行います。
tableName:= UPPER(someValue || '%');
...
Select * from table where upper(table.name) like tableName
また、明らかなことを忘れないでください、テーブルのデータは大文字と小文字を区別する必要がありますか?すでに小文字で行を挿入する(または既存のDB行を小文字に変換する)だけで、最初から行を完了することができます。