sql >> データベース >  >> RDS >> Oracle

Oracleのcharデータ型のクエリ列

    問題は、charを使用するかどうかにあります またはvarchar2 クエリの比較セマンティクス。ハードコードされた文字列リテラルまたはchar(10)がある場合 変数の場合、Oracleはcharを使用します 末尾の空白を無視する比較セマンティクス。 varchar2(10)がある場合 変数の場合、Oracleはvarchar2を使用します 末尾の空白を含む比較セマンティクス。したがって、

     select aa 
       into v_temp 
       from abc 
      where aa in (v_aa);
    

    v_aaの場合、行を返します char(10)として定義されています (または文字列リテラルに置き換えられた場合)ただし、varchar(10)として定義されている場合はそうではありません 。

    これは、ほとんどの人がcharを避ける(多くの)理由の1つです。 データ型は完全に。個人的には、たまにcharを気にしません。 真に固定幅のデータの場合(つまり、char(1) フラグとchar(2)の場合 状態コードの場合)charを使用するメリットはありませんが varchar2以上 それらのシナリオでは。ただし、固定幅以外の場合は、charを使用します。 意味がありません。 Oracleに必要以上のスペースを消費させ、2セットの文字列比較セマンティクスを処理するための作業を自分で作成しているだけです(他の問題もあります)。



    1. MySQLで自動インクリメントがリセットされない

    2. CREATETRIGGERの前のDELIMITERでのMySQL構文エラー

    3. Statement.setFetchSize(nSize)メソッドはSQL Server JDBCドライバーで実際に何をしますか?

    4. MySQLでいくつかの値のMODE(S)を見つける簡単な方法はありますか?