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

to_numberOracleSQLの数値形式の動的長さ

    唯一の方法は、nls_numeric_charactersに適切な値を設定することです。 パラメータセッション全体で、to_number()を使用します フォーマットマスクを指定せずに機能します。

    簡単な例を次に示します。小数点記号はコンマ","です。 数値リテラルにはピリオド"."が含まれます 小数点記号として:

    SQL> show parameter nls_numeric_characters;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------
    nls_numeric_characters               string      ,.
    
    SQL> with t1(col) as(
      2    select '12345.567'  from dual union all
      3    select '12.45'      from dual
      4  )
      5  select to_number(col) as res
      6    from t1;
    select to_number(col)
           *
    ERROR at line 5:
    ORA-01722: invalid number 
    
    SQL> alter session set nls_numeric_characters='.,';
    
    Session altered.
    
    SQL> with t1(col) as(
      2    select '12345.567'  from dual union all
      3    select '12.45'      from dual
      4  )
      5  select to_number(col) as res
      6    from t1;
    
    res                                                                 
    --------------    
         12345.567       
             12.45    
    


    1. MySQLでvarcharを自動インクリメント

    2. MySQLの列値の前に文字列を追加するにはどうすればよいですか?

    3. MySQLクエリはテーブル結合でインデックスを使用しません

    4. Sqlcmd:エラー:Microsoft SQL Server Native Client 10.0:通信リンク障害