如何让mysql理解整数/浮点字段中的非英语小数点?
setLocale(LC_ALL, 'da_DK.ISO-8859-1');
Run Code Online (Sandbox Code Playgroud)
例如:
0,25 will be inserted as 0
0.25 will be inserted as 0.25
Run Code Online (Sandbox Code Playgroud) 我想在我的查询字符串中替换SELECT数据库中的字段中的任何"点"字符.
我需要修改大量的查询,我愿意这里有一个适用于所有列的函数SELECT.我的意思是这样的SELECT DOT_TO_COMMA(*) FROM...
现在我拥有的东西:
SELECT price, lastprice FROM products
OUTPUT: 22.10, 5.24
EXPECTATION: 22,10, 5,25
我为客户创建了csv文件的导入程序,我遇到的问题是我在文件中得到了十进制值的截断值,例如:
in .csv file price is 12,23
and in database it is saved as 12.
Run Code Online (Sandbox Code Playgroud)
我检查了字段,它们被设置为十进制(10,2)所以这不应该是平常的.我加载文件的代码是:
LOAD DATA LOCAL INFILE "U:/v7/root/file/docimport/3/87/article.csv"
INTO TABLE im_artikel
CHARACTER SET latin1 FIELDS TERMINATED BY ";" IGNORE 1 LINES
(article,price,grossprice);
show WARNINGS;
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
1265 Data truncated for column 'price' at row 1
1265 Data truncated for column 'grossprice' at row 1
Run Code Online (Sandbox Code Playgroud)
.Csv文件如下所示:
Shoes;40,00;21,46
Run Code Online (Sandbox Code Playgroud)
我可以将所有字段更改为varchar而不是没有问题,但我认为这不是解决方案.
我在MySQL中存储的数字为总数(十进制16,2)1423.28
在进行一些计算后,我从PHP中显示它:
function calculate_balance($total){
//get total paid from another function
$total_paid = ...
if ($total_paid == 0){
return $total;
}else{
return $total-$total_paid
}
}
$balance = calculate_balance($total);
echo number_format($balance, 2); //returns 1.00
Run Code Online (Sandbox Code Playgroud)
我试过了
number_format((float)$balance, 2);
number_format(floatval($balance), 2);
Run Code Online (Sandbox Code Playgroud)
UPDATE
var_dump($balance)
我得到了以下输出.
string(8) "1,423.28" float(152) string(6) "252.00" string(6) "247.50" string(6) "247.50" string(6) "247.50" string(6) "549.90" string(6) "495.00" float(0) string(6) "284.76" float(265)
它的工作正常,没有number_format()1000以下的价值.例如:如果余额等于252.00
echo $balance;
Run Code Online (Sandbox Code Playgroud)
产量
252.00