如何在BigQuery中设置并使用INT64的所有位(第64位)
在BigQuery中使用INT64的所有位
我想了解如何在BigQuery中使用INT64的所有位。以下代码可以正常运行:
DECLARE myBits INT64 DEFAULT 0x0000000000000001;
但下面的代码运行失败,报错信息如下:
DECLARE myBits INT64 DEFAULT 0x8000000000000000;
查询错误:无效的十六进制整数字面量:0x8000000000000000
该十六进制值在MS SQL Server中可正常使用,但在BigQuery中不行。我尝试过使用BYTES类型:
DECLARE myBits BYTES(16) DEFAULT FROM_HEX('8000000000000000');
但将其用于位运算(&, |)时,结果不符合预期。根据文档,应使用INT64类型——如何赋值才能使用所有位?
编辑 - 解决方案
经过进一步搜索和测试,我找到了可行的解决方案:
/* 这个INT64数值仅第64位为1,其余位都是0 */ DECLARE e INT64 DEFAULT -9223372036854775808;
我也测试了Roar S提供的方法,以下代码可正常运行:
/* 0x1仅最右侧位为1, * 将这个位左移63位, * 结果和上面的数值一致 */ DECLARE a INT64 DEFAULT (0x1 << 63);
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

