- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我所知,在 PostgreSQL 中,你无法从十六进制或位转换为smallint,或者反之亦然。
要将 int2 转换为 bit16,可以执行以下操作:
select ((((-32768)::int2)::int4)::bit(32)<<16)::bit(16)
Result: 1000000000000000
但是我们怎样才能反过来呢?
我有一个 int2 标志,我想在其中设置最高位。但由于我不能对 int2 使用位运算,所以我必须先将其转换为 int4,所以我可以这样做。像这样的事情:
SELECT flags,
(flags | x'8000'::integer) myInt2Result
FROM MyTable;
然后我将使用 myInt2Result 来调用其他进程。为了使其更容易尝试,让我们假设 flags 是一个值为 2560 的smallint:
SELECT 2560::int2, (2560::int2 | x'8000'::integer)
RESULT: 35328
由于这个值大于+32767,并且我在 PostgreSQL 中没有无符号的smallint,所以我无法将其直接转换为int2(smallint 超出范围)。
另外:在 PostgreSQL 中我们不能这样做
x'8000'::int2 (it would be really handy)
OR
x'8000'::integer::int2 (smallint out of range)
有没有办法在 PostgreSQL 中做到这一点,或者我必须自己将 int4 转换为 int2 (考虑到位)?
最佳答案
以下表达式在 PostgreSQL 9.1 中适用于我:
select ((-32768)::int2)::int4::bit(16);
==> X'8000'
select ((('X8000'::bit(16))::bit(32)::int4) >> 16)::int2;
==> -32768
编辑:一些证据表明这有效:
-- int2 to bit16 and back
create temp table test1 (x int2);
insert into test1 select generate_series(-32768,32767)::int2;
select x from test1 where x != ((x::int4::bit(16) ::bit(32)::int4) >> 16)::int2;
==> no rows selected
-- bit16 to int2 and back
create temp table test2 (x bit(16));
insert into test2 select generate_series(0,65536)::bit(16);
select x from test2 where x != (((x::bit(32)::int4)>>16)::int2) ::int4::bit(16);
==> no rows selected
关于sql - PostgreSQL:位到smallint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16097659/
PostgreSQL 是否有一个常量(如 MAXFLOAT in Objective-C )作为 smallint 的最大值? 我知道 PostgreSQL numeric types documen
有比smallint(16bit)更小的数据类型吗?我需要一个只有从 1 到 31 的数字的列,所以我认为 5 位就足够了,我不想浪费空间,因为每个元组有 11 位的开销。 最佳答案 在docs没有这
我是 SQL Server 的新手,这个问题可能会在这里重复出现。因为我还没有找到解决我的问题的方法。我想在这里发帖。所以这是我的问题 select(volume * speed) from tra
我需要定义一个具有十六进制值的 SmallInt 常量。以某种方式像这样: const a: SmallInt = $8000; 当然,$8000 值违反了 SmallInt 的子范围边界。我知道
现在我有一个包含展示次数、点击次数和点击率的表格。 我想知道是否应该使用tinyint(1)并存储范围为1-250的ctr 或者我应该将其存储为具有更高精度的 float 。或者可能是十进制。 对于统
如果这个问题已经得到解答,我深表歉意,我使用了搜索功能,但找不到与此完全匹配的问题。 我正在尝试通过 mysql_query 将邮政编码字段(澳大利亚)插入我的数据库,我已确认一切正常,但有效的邮政编
我正在尝试获取每个用户的年龄。我在上面提供了示例数据。 birth_year 列是 smallint 数据类型。我怎样才能做到这一点我已经尝试了很多方法,但我以前从未使用过 PostgreSQL。 最
DB2 V9 z/os 背景:我有一个定义为 (col1 int, col2 smallint, col3 int, col4 date) 的 4 列表 第 1 行的值为 (1,123,456,201
如果我知道列的值应该始终在 smallint 数据类型允许的范围内,从数据完整性维护的角度来看,我似乎应该将数据存储在 smallint 列而不是 int 列中. 但是我想知道是否可以通过使用更少的字
我在 Java 代码中使用 PostgreSQL Plus Advance Server 9.3 和 hibernate3。所以今天我在将对象值存储到数据库时遇到了这个问题。 这是一个包含所有 set
我在 Postgres 中有一个大约 100 万行的表。此表中的一列存储 SMALLINT 数据。现在我需要在此列中存储比我预期更大的数字。如何将这个现有列从 SMALLINT 转换为 INTEGER
我的服务器提供商已经用 MariaDB 替换了 MYSQL,这似乎工作方式不同。我在运行“SHOW GLOBAL VARIABLES LIKE '%version%';”时获得的有关此服务器的信息是:
真是一个安心的问题。 我的数据库中有一个字段使用 tinyint(3) 作为整数值。我现在意识到这是低值并想将其更改为 smallint。如果我使用 phpMyAdmin 更改它,是否会影响当前数据?
最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint。其中比较迷惑的是int和smallint的差别。今天就在网上仔细找了找,找到如下内容
对包含 smallint 列的表运行 select 语句并收到上述错误: SELECT * FROM [Database].[dbo].[TableName] where ColumnName = '
我正在将 SmallInt 变量与 Ord 函数的结果进行比较。示例: var MySmallInt : SmallInt; begin MySmallInt := 5; if(MySma
我是 SQL 新手!因此,如果我想将一个人的高度添加到我的表中(例如 1.86),我应该使用什么变量类型?? Tinyint 还是 Smallint? 最佳答案 你应该使用 要将::1.86 存储为人
目前,我的 MySQL 数据库中有一些表,其中我将 id 字段声明为 SMALLINT(6) 类型(这是否正确为 SMALLINT 只能到 65535 [长度为 5])。我已阅读here在整数类型下,
我在一个表中存储了 5000 本书,该表包含标题、作者、年份和 ISBN。现在我正在制作一张书评表。哪个更有效或者更好的方法是在书籍表中为 id 创建一个列并使用该 id 将书籍评论存储在评论表中,或
1) 创建表 CREATE TABLE ad_position_ad ( p_id bigint , p_name charact
我是一名优秀的程序员,十分优秀!