gpt4 book ai didi

c# - 如何使用 nHibernate 存储 128 位整数?

转载 作者:行者123 更新时间:2023-11-30 17:16:20 24 4
gpt4 key购买 nike

问题:

如何使用 nHibernate 存储 128 位整数 (IPv6)?

特别是在 Firebird 上,BigInteger MAX 大小为 2^64。

我想做这样的计算:

SELECT * FROM T_Country_IP_Range 
WHERE
(block_from <= @in_IP)
AND (block_to >= @in_ip)

因此将其存储为 text/varchar/char 不是一种选择。

最佳答案

似乎确实没有对 INT128 的 firebird 支持。

您可以将 128 位表示为两个 64 位字段,一个字段中的高 64 位 (IP_upper) 和另一个字段中的低 64 位 (IP_Lower) .

所有比较操作都必须比较两个字段。如果上部字段更小/更大或相等,则检查下部字段:

SELECT * FROM T_Country_IP_Range 
WHERE
(
block_from_upper < @in_IP_upper
OR
(block_from_upper = @in_IP_upper AND block_from_lower <= @in_IP_lower)
)
AND
(
block_to_upper > @in_IP_upper
OR
(block_to_upper = @in_IP_upper AND block_to_lower >= @in_IP_lower)
)

毫无疑问,有点尴尬

关于c# - 如何使用 nHibernate 存储 128 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com