如何使用逗号对数字格式格式化sql列



我有一个数据表,其中的数字用以下格式表示:

Incorrect  | What I want to format it to
------------------------------------------
123,452,03 | 123,452.03
234.00     | 234.00
456,02     | 456.02

我面临的挑战是有些数字有不止一个逗号。我知道这可以通过regex解决,但可以在构造字符串时使用一些帮助。逻辑应如下:

  1. 检查字符串是否有逗号
  2. 如果逗号后面有两个数字,并且它们在字符串的末尾
  3. 将逗号值替换为句点
  4. 如果逗号后面有三个数值,或者位于字符串中间,则不执行任何操作

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, '.')

(一旦你修复了你的数字,你应该把它们放在一个数字列中,然后去掉现有的文本列。(

最新更新