有没有办法在 SQL 中获取一个位字段(非交易)
Is there a way to get a Bit field in SQL (non transact)
假设该字段带有 134479872
之类的数字,我希望它恢复为 0xffffffff
并提取每一对,例如 Oxff00000
、0x00ff0000
, 0x0000ff00
和 0x000000ff
在单独的字段中。这些位应该告诉我关于左、右、上和下边缘的信息:前两位用于左边缘,接下来的两位用于右边缘,依此类推。
现在我尝试 SELECT CAST(myfield as Binary(8))
获取 0xffffffff
格式,但它不接受它。从那里我可以使用 Mid()
来获得我需要的两个字段,最后一部分我没问题。
请注意,我的 SQL 是处理 Access 2010 的,它不接受 Transact-SQL 函数。
提前致谢
您可以使用 Hex$()
函数。
? Hex$(134479872)
8040000
要填充到 8 个字符:
? Right("00000000" & Hex$(134479872), 8)
08040000
但是,如果您使用完整的 32 位,您将 运行 遇到问题 - VBA Longints 已签名。
? &H7FFFFFFF
2147483647
? Hex$(2147483648)
<Overflow error>
假设该字段带有 134479872
之类的数字,我希望它恢复为 0xffffffff
并提取每一对,例如 Oxff00000
、0x00ff0000
, 0x0000ff00
和 0x000000ff
在单独的字段中。这些位应该告诉我关于左、右、上和下边缘的信息:前两位用于左边缘,接下来的两位用于右边缘,依此类推。
现在我尝试 SELECT CAST(myfield as Binary(8))
获取 0xffffffff
格式,但它不接受它。从那里我可以使用 Mid()
来获得我需要的两个字段,最后一部分我没问题。
请注意,我的 SQL 是处理 Access 2010 的,它不接受 Transact-SQL 函数。
提前致谢
您可以使用 Hex$()
函数。
? Hex$(134479872)
8040000
要填充到 8 个字符:
? Right("00000000" & Hex$(134479872), 8)
08040000
但是,如果您使用完整的 32 位,您将 运行 遇到问题 - VBA Longints 已签名。
? &H7FFFFFFF
2147483647
? Hex$(2147483648)
<Overflow error>