これがどれほど効率的かは気にしないでください:
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]'
を変更する必要があります 悪いキャラクターが増えるにつれて。
参考文献:
<オール>いいね
- http://msdn.microsoft.com /en-us/library/ms179859(v=sql.90).aspx