これがどれほど効率的かは気にしないでください:
Select convert(decimal(28,10), rtrim(ltrim(replace(REPLACE(AdditionalDescription,'%',''), ',','.')))) As AdditionalDescription
from PriceTerm
where AdditionalDescription like '%[%]%'
説明:
<オール>, を置き換えます . で decimal(28, 10) に変換 .更新:
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]' を変更する必要があります 悪いキャラクターが増えるにつれて。
参考文献:
<オール>いいね - https://msdn.microsoft.com /en-us/library/ms179859(v=sql.90).aspx