2017-03-02 104 views
0

任何人都知道如何在MySQL存储过程中将大int转换为int。Mysql bigint到int

  1. 解在此posthttp://stackoverflow.com/questions/11595217/convert-bigint-unsigned-to-int不工作,因为我尝试:

组@ X = BigToInt(2147483649 ); ERROR 1264(22003):超出范围值的列

  • 我尝试这样做,这是行不通的任一:IF EXISTS

    DELIMITER // DROP FUNCTION BigToInt;

    CREATE FUNCTION BigToInt(n BIGINT)RETURNS INTEGER begin DECLARE结果INTEGER默认为0; set result = CAST(n为SIGNED); 返回结果; end // DELIMITER;

  • 它给了我#1相同的错误。

    +1

    什么地方? 'INT'只能*保持-2147483648和2147483647之间的值。2147483649 ** **太大**。如果你需要的数字很大,你需要一个'BIGINT',这是没有办法的。 – tadman

    +0

    除非,* maybe *,'INT UNSIGNED'在这里适用。 – eggyal

    回答

    0

    其他选项:

    DELIMITER // 
    CREATE FUNCTION BigToInt (n BIGINT) RETURNS VARCHAR(50) 
    begin 
    DECLARE result VARCHAR(50) default 0; 
    set result = CAST(n as signed); 
    return result; 
    end 
    // DELIMITER ; 
    

    这将接受一个长整型,但限制到只有19值。

    整数具有“出于对列范围的值”是一个问题,这里maximum value