DB2的varchar_format函数在MySQL中的替代方案咨询
MySQL替代DB2 varchar_format函数的实现方案
你可以用MySQL的FORMAT()函数结合CASE WHEN逻辑实现相同效果,具体语句如下:
CASE WHEN ord = 2 THEN REPLACE(FORMAT(col1, 2), ',', '') ELSE FORMAT(FLOOR(col1), 0) END
逻辑说明
- 当ord=2时:
先用FORMAT(col1, 2)将数值格式化为保留两位小数的字符串(MySQL默认会给整数部分加千分位),再通过REPLACE去掉千分位逗号,匹配DB2中'999.00'的格式要求(无千分位、保留两位小数)。 - 当ord≠2时:
先用FLOOR(col1)对数值取整(对应DB2格式无小数位的规则),再用FORMAT(..., 0)给整数部分添加千分位分隔符,匹配DB2中'9,999,999,999'的格式。
注意事项
如果col1是字符串类型,需要先转成数值类型,比如用CAST(col1 AS DECIMAL):
CASE WHEN ord = 2 THEN REPLACE(FORMAT(CAST(col1 AS DECIMAL), 2), ',', '') ELSE FORMAT(FLOOR(CAST(col1 AS DECIMAL)), 0) END
内容的提问来源于stack exchange,提问作者curiousEngg6
相关产品推荐
相关产品推荐

