我正在处理的学校作业说将小数(14,0)列格式化为货币[US $ xxx,xxx]并且右对齐[所有逗号垂直排列]。“
我可以使用以下格式选择正确格式的数据:
CONCAT("US$", FORMAT(theColumn, 0))
但数据不合理。我一直在搜索和搜索,根本无法找到任何正确的输出方法。
我确实在这里找到了一个答案,它显示了如果列是字符串类型且具有固定宽度的方法,但是我找不到一种方法来右对齐十进制数据类型的输出。有可能吗?
编辑:
MySQL返回左对齐的数据,如下所示:
US$18,100,000,000
US$130,100,000,000
US$1,200,000,000
我想选择正确的方式,如下:
US$18,100,000,000
US$130,100,000,000
US$1,200,000,000
答案 0 :(得分:20)
我想你想要
select lpad(column_name,x,' ') from table_name;
其中x是您想要填充的值的位数(例如8个位置)
答案 1 :(得分:5)
我会做的:
$.ajax({
type: "POST",
url: "page.php",
data: datastring,
cache: false,
dataType: "text",
success: function(data)
{
if (data.indexOf("Error") > -1) {
$("label[for='withold']").hasClass( ".error" ).text(data);
} else {}
}
}); // end $.ajax
这样做会在20个字符的列中显示输出,在值的左侧填充''。
答案 2 :(得分:-9)
我认为以下查询是您问题的答案。 由于用分隔符表示的DECIMAL(14,0)类型的最大长度为18,因此您必须在每个连接结果前面找出需要添加多少空格。我计算数字的位数,然后是逗号的数量((数字-1的长度)DIV 3),最后是要添加的空格数(18 - numberlength - separatorslength)。希望我没有遗漏一些东西。
SELECT column_name,
CONCAT("US$", FORMAT(column_name, 0)) as authorstry,
CHAR_LENGTH(CAST(FORMAT(column_name, 0) AS CHAR(18))) AS stringlength,
CHAR_LENGTH(column_name) as numofdigits,
((CHAR_LENGTH(column_name)-1) DIV 3) as numofseparators,
(18-(CHAR_LENGTH(column_name))-((CHAR_LENGTH(column_name)-1) DIV 3)) as spacestobeadded
CONCAT(SPACE(18-(CHAR_LENGTH(column_name))-((CHAR_LENGTH(column_name)-1) DIV 3)) ,"US$",FORMAT(column_name, 0)) as finalresutl
FROM table;