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

SQL部分文字列を10進数にキャストする方法は?

    これがどれほど効率的かは気にしないでください:

    Select convert(decimal(28,10), rtrim(ltrim(replace(REPLACE(AdditionalDescription,'%',''), ',','.')))) As AdditionalDescription
    from PriceTerm 
    where AdditionalDescription like '%[%]%'
    

    説明:

    <オール>
  1. % をスペースに置き換えて削除
  2. , を置き換えます .
  3. 先頭または末尾のスペースをすべて削除してください。
  4. decimal(28, 10) に変換 .
  5. 更新:

    OPによる追加情報による。

    Select 
    convert(decimal(28,10),replace(replace(replace(rtrim(ltrim(AdditionalDescription)), ' ',''),',','.'),'%','')) AS PercentAddition
    from test 
    where replace(rtrim(ltrim(AdditionalDescription)), ' ','')
    like '[0-9]%[,.]%[%0-9]'
    and 
    isnumeric(replace(replace(replace(rtrim(ltrim(AdditionalDescription)), ' ',''),',','.'),'%',''))=1
    

    '[0-9]%[,.]%[%0-9]'の説明 :

    • [0-9] - データが数字で始まる場合にのみ関心があります。
    • % - 数字の後には任意の文字を含めることができます。 isnumeric で非数値を処理します どこで 句。
    • [,.] - のいずれかを持つデータがあります または . .
    • % - [,.] の後 任意の文字を含めることができます。 isnumeric で非数値を処理します どこで 句。
    • [%0-9] - データを数字または % で終わらせたい .

    注: '[0-9]%[,.]%[%0-9]' を変更する必要があります 悪いキャラクターが増えるにつれて。

    参考文献:

    <オール>
  6. 操作する SQLFiddle:http://sqlfiddle.com/#!3/09a34 /4
  7. いいね - http://msdn.microsoft.com /en-us/library/ms179859(v=sql.90).aspx


    1. asp.netのSQLサーバーデータベースからの画像を表示するための最良の方法は何ですか?

    2. SqlAlchemyとcx_Oracleを使用してPandasDataFrameをOracleデータベースに書き込む場合は、to_sql()を高速化します

    3. Oracleの表示メッセージを変更する

    4. sp_executesqlはパラメータで遅い