将BIGINT UNSIGNED转换为INT

Jos*_* M. 11 mysql types casting

我知道想要将某些东西从较大的数据类型转换为较小的数据类型是非正统的并且具有潜在的危险性.但是,在这种情况下,BIGINT UNSIGNED列的值极不可能大于列的最大大小INT.

所以,使用MySQL,我正在阅读表结构.在阅读information_schema.columns.ordinal_position专栏时,我意识到它是类型的BIGINT UNSIGNED.现在,我想把它作为INT我的处理目的.我想在SQL中转换/转换类型.

CAST并且CONVERT只允许我改变数据类型的符号,显然.

SELECT CAST(ordinal_position AS SIGNED)
FROM information_schema.columns
Run Code Online (Sandbox Code Playgroud)

我希望专门返回的列作为INT.例如,将列切割为a的最大值INT并返回该值.

现在我只需在将值拉回后更改数据类型.但是我想知道如何在SQL中做到这一点.

and*_*oke 8

这篇文章似乎有一个解决方案:

创建将执行转换的函数:

创建功能BigToInt(n BIGINT)返回INTEGER RETURN n;

正如您所看到的,该函数非常简短:它采用BIGINT并立即将其作为普通整数返回.但是,这样做的一个结果是某些数据将被截断为Int的最大可能值.

(大概你可以在签名上添加"UNSIGNED" - 如果不是,你仍然可以将它与已经删除未签名部分的演员表组合在一起).