Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将小数点后的数字存储到MySQL中的变量中_Mysql_Database_Triggers_Decimal_Point - Fatal编程技术网

将小数点后的数字存储到MySQL中的变量中

将小数点后的数字存储到MySQL中的变量中,mysql,database,triggers,decimal,point,Mysql,Database,Triggers,Decimal,Point,假设我现在想把76点之后的数字存储到一个变量中。我该怎么做? 我将在下面给出一个场景 declare x (3,2); set x = 323.76; declare y int; select cast(substring_index(x, '.', -1) as unsigned) into y; 任何帮助都将不胜感激 作为过程或函数和触发器,只需稍加修改即可使用代码 DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `man

假设我现在想把76点之后的数字存储到一个变量中。我该怎么做? 我将在下面给出一个场景

declare x (3,2);
set x = 323.76;
declare y int;
select cast(substring_index(x, '.', -1) as unsigned) into y;

任何帮助都将不胜感激

作为过程或函数和触发器,只需稍加修改即可使用代码

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `mantisse`()
BEGIN
declare x DECIMAL(8,2);

declare y int;
set x = 323.76;
select cast(substring_index(x, '.', -1) as unsigned) into y;
INSERT INTO mytable VALUE (y);
END$$
DELIMITER ;
或者,如果要在查询中使用它,可以使用用户定义的变量

set @x = 323.96;
select cast(substring_index(@x, '.', -1) as unsigned) into @y;
INSERT INTO mytable VALUE (@y);
您有一个alreadya字符串,所以使用SUBSTRING获得9

set @x = 323.96;
select cast(SUBSTRING(substring_index(@x, '.', -1),1,1) as unsigned) into @y;
SELECT @y;
INSERT INTO mytable VALUE (@y);

当然,这在程序中也起作用,作为过程或查找和触发器,您只需稍加修改即可使用代码

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `mantisse`()
BEGIN
declare x DECIMAL(8,2);

declare y int;
set x = 323.76;
select cast(substring_index(x, '.', -1) as unsigned) into y;
INSERT INTO mytable VALUE (y);
END$$
DELIMITER ;
或者,如果要在查询中使用它,可以使用用户定义的变量

set @x = 323.96;
select cast(substring_index(@x, '.', -1) as unsigned) into @y;
INSERT INTO mytable VALUE (@y);
您有一个alreadya字符串,所以使用SUBSTRING获得9

set @x = 323.96;
select cast(SUBSTRING(substring_index(@x, '.', -1),1,1) as unsigned) into @y;
SELECT @y;
INSERT INTO mytable VALUE (@y);

当然,这在程序中也起作用

您可以使用MOD函数轻松地从数字中获取小数:

设置@num=323.76; 设置@小数=MOD@num, 1 * 100; 选择@小数;-76
除以1,您可以使用MOD函数得到余数,即0.76,然后只需将其乘以100。

您可以使用MOD函数轻松地从数字中获得小数:

设置@num=323.76; 设置@小数=MOD@num, 1 * 100; 选择@小数;-76
除以1,你可以用MOD函数得到余数,即0.76,然后你只需要将它乘以100。

如果我理解这个规范,这看起来很奇怪。我会使用substring_index函数来删除之前的所有内容,包括点。但是如果我理解规范,我会做数学运算来得到一个值v,0,这看起来很奇怪。我会使用substring_index函数来删除之前的所有内容,包括点。但我会计算得出一个值V,0,如果我想只考虑点之后的第一个数字,那该怎么办?触发器示例7和查询示例9中的哪个位置?你能帮助NBK吗?感谢NBK的帮助:非常感谢。如果我只想考虑点之后的第一个数字呢?触发器示例7和查询示例9中的哪个位置?你能帮助nbk吗?谢谢你的帮助nbk:非常感谢。非常感谢你的回复,但我不想要十进制的。我想要整数。非常感谢您的回复,但我不想要小数。我想要整数。3,2不够大。需要5,2。第一个数字是总位数。3,2不够大。需要5,2。第一个数字是总位数。