我有一个数据表,其中的数字用以下格式表示:
Incorrect | What I want to format it to
------------------------------------------
123,452,03 | 123,452.03
234.00 | 234.00
456,02 | 456.02
我面临的挑战是有些数字有不止一个逗号。我知道这可以通过regex解决,但可以在构造字符串时使用一些帮助。逻辑应如下:
- 检查字符串是否有逗号
- 如果逗号后面有两个数字,并且它们在字符串的末尾
- 将逗号值替换为句点
- 如果逗号后面有三个数值,或者位于字符串中间,则不执行任何操作
EDIT:使用Sql Server构造表达式。
在字符串列中存储数字真是个坏主意。然后甚至存储无效的数字。检查倒数第二个字符。如果是逗号,请将其更改为点。
case when left(right(str, 3), 1) = ',' then
stuff(str, len(str) - 2, 1, '.')
else
str
end
或者,如果所有数字都以两位小数结尾:
stuff(str, len(str) - 2, 1, '.')
(一旦你修复了你的数字,你应该把它们放在一个数字列中,然后去掉现有的文本列。(