java
  • sql
  • case-insensitive
  • 2016-04-01 6 views 1 likes 
    1

    を大文字小文字を区別しない検索を指定することができます私は現在の場所にこのコードを持っている:大文字DWGと一致どのように私は、Java

    query = "select ID_OBJECT from "+Config.props.getProperty("Ob.SchemaName.Objects")+".sdm_doc_info where name like ? and typefileverscurr = 'DWG'";  
    

    しかしこれだけを返す結果を。 私の検索で大文字と小文字を区別しないようにしたいと思います。 この場合、どうすれば使用できますか? は、私は次のことを試してみましたが、私のEclipseはそれを好きではない:あなたの助けを

    query = "select ID_OBJECT from "+Config.props.getProperty("Ob.SchemaName.Objects")+".sdm_doc_info where name like ? and typefileverscurr.matches('(?i:dwg)')"; 
    

    感謝を。

    +0

    データベースのタイプ(DB2、MySQLのは、Oracleなど)を指定することができればそれが役立つだろう。 –

    +1

    これは本当にJavaとは関係ありません。それはSQLの質問です。私はタグを追加しました。 – ajb

    +0

    私はあなたの答えがデータベース固有であると思います。たとえば、MySQLはデフォルトで大文字と小文字を区別した照合で出荷されるため、MySQLではこの問題は発生しません。 OracleとSQL Serverは別の話です。 –

    答えて

    1

    通常、私は一つは、このように、SQL upper()またはlower()関数を使用している、二つの方法でジョブのこれらの種類を行うために使用します。

    "select ID_OBJECT from "+something+".sdme_doc_info where lower(typefileverscurr) = 'dwg'"; 
    

    OR

    "select ID_OBJECT from "+something+".sdme_doc_info where upper(typefileverscurr) = 'DWG'"; 
    

    もう1つの方法は、クエリにlikeを使用し、上記の関数を同様に使用して、より鈍感にすることです。

    "select ID_OBJECT from "+something+".sdme_doc_info where lower(typefileverscurr) like '%dwg%'"; 
    

    OR

    "select ID_OBJECT from "+something+".sdme_doc_info where upper(typefileverscurr) like '%DWG%'"; 
    
    +1

    照合を変更することで、データベースでこれを処理するほうが良いかもしれません。 –

    +0

    あなたは正しいです、彼はデータベースも指定していません。 –

    +0

    私も上記と同様の試みをしましたが、検索を2回実行する必要があるため、システムのパフォーマンスにかなりの影響を与えました。私は、提供された文字列に対して大文字と小文字を区別しない述語的な検索を実行できるものを探しています。 – jak

    関連する問題