选择两个 IP 范围之间的记录

2024-02-20

我有一张桌子,里面存放着ID, Name, Code, IPLow, IPHigh例如:

1, Lucas, 804645, 192.130.1.1, 192.130.1.254
2, Maria, 222255, 192.168.2.1, 192.168.2.254
3, Julia, 123456, 192.150.3.1, 192.150.3.254

现在,如果我有一个 IP 地址192.168.2.50,如何检索匹配的记录?

Edit

根据戈登的回答(我收到编译错误),这就是我所拥有的:

select PersonnelPC.*
from (select PersonnelPC.*,
             (
              cast(parsename(iplow, 4)*1000000000 as decimal(12, 0)) +
              cast(parsename(iplow, 3)*1000000 as decimal(12, 0)) +
              cast(parsename(iplow, 2)*1000 as decimal(12, 0)) +
              (parsename(iplow, 1))
             ) as iplow_decimal,
            (
              cast(parsename(iphigh, 4)*1000000000 as decimal(12, 0)) +
              cast(parsename(iphigh, 3)*1000000 as decimal(12, 0)) +
              cast(parsename(iphigh, 2)*1000 as decimal(12, 0)) +
              (parsename(iphigh, 1))
             ) as iphigh_decimal
      from PersonnelPC
     ) PersonnelPC
where 192168002050 between iplow_decimal and iphigh_decimal;

但这给了我一个错误:

Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type int.

有任何想法吗?


痛苦地。 SQL Server 的字符串操作函数很糟糕。然而,它确实提供了parsename()。此方法将 IP 地址转换为大十进制值以进行比较:

select t.*
from (select t.*,
             (cast(parsename(iplow, 4)*1000000000.0 as decimal(12, 0)) +
              cast(parsename(iplow, 3)*1000000.0 as decimal(12, 0)) +
              cast(parsename(iplow, 2)*1000.0 as decimal(12, 0)) +
              cast(parsename(iplow, 1) as decimal(12, 0))
             ) as iplow_decimal,
             (cast(parsename(iphigh, 4)*1000000000.0 as decimal(12, 0)) +
              cast(parsename(iphigh, 3)*1000000.0 as decimal(12, 0)) +
              cast(parsename(iphigh, 2)*1000.0 as decimal(12, 0)) +
              cast(parsename(iphigh, 1) as decimal(12, 0))
             ) as iphigh_decimal
      from t
     ) t
where 192168002050 between iplow_decimal and iphigh_decimal;

我应该注意到,IP 地址通常以 4 字节无符号整数的形式存储在数据库中。这使得比较变得更加容易。 。 。尽管您需要复杂的逻辑(通常包含在函数中)将值转换为可读格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择两个 IP 范围之间的记录 的相关文章

  • 如何延长SQL查询的超时时间

    这不是连接超时 因为与数据库的连接正常 问题是我调用的存储过程花费的时间超过 30 秒 并导致超时 该函数的代码如下所示 SqlDatabase db new SqlDatabase connectionManager SqlConnect
  • SQL Server中根据条件进行计数

    有谁知道如何在 SQL Server 中根据条件进行计数 Example 如何对表中名称为 system 的记录以及 CaseID 记录总数进行列计数 顾客表 UserID CaseID Name 1 100 alan 1 101 alan
  • Oracle DB & SQL Developer:“错误报告:执行已完成,但有警告” - 如何*查看*该警告?

    我正在设置一个本地 Oracle 11g 数据库 我们已经运行的另一个数据库的克隆 我正在 SQL Developer 中运行一堆生成的 PL SQL 命令 我得到输出 Error starting at line x in command
  • 如何增加每次 INSERT INTO 迭代的值?

    我有一个查询 如下所示 第 1 列位于 另一列是 varchar 100 INSERT INTO TABLE1 column1 column2 SELECT MAX column1 FROM TABLE1 1 anotherColumn F
  • PostgreSQL:用以前的值填充时间序列查询中的 NULL 值

    我有一个包含时间相关信息的数据库 我想要一个包含每分钟值的列表 像这样 12 00 00 3 12 01 00 4 12 02 00 5 12 03 00 5 12 04 00 5 12 05 00 3 但是 当几分钟内没有数据时 我得到如
  • 对于 IN 列表中的缺失值返回 NULL

    我有一个这样的表 id val 1 abc 2 def 5 xyz 6 foo 8 bar 和一个像这样的查询 SELECT id val FROM tab WHERE id IN 1 2 3 4 5 返回 id val 1 abc 2 d
  • 限制相同的数据条目

    我是 SQL 新手 我有两张桌子 一张放冰箱 一张放食物 一台冰箱只能存放 5 种食物 所以我想知道是否有办法限制食物表中只有 5 个相同的冰箱 ID 条目 没有直接的方法来强制执行这样的约束 我能想到的最好的是 有一个 冗余 列food
  • postgresql to_json() 函数转义所有双引号字符

    我编写了一个 plpgsql 脚本 它在字符串中生成一个 json 对象数组 但是在我使用 to json 方法将带有该字符串的变量传递给它之后 它返回一个带双引号的结果 并且每个双引号字符都被转义 但我需要原样的字符串 jsonResul
  • SQL Server - 如何更改仅具有某些特定值的表列?

    TABLE Family BrothersName varchar 30 我已经在 BrothersName 中添加了一些名称 值 但现在我希望它只有 2 个特定名称 Alex and Tom 但稍后它也应该接受其他名称 处理这个问题的最佳
  • 空间索引无助于 SQL 查询(性能非常慢)

    我正在尝试测试包含 170 万个邮政编码的表中纬度 经度值的空间索引的性能 我创建了一个地理列并向其中添加了一个索引 但是使用空间索引的查询比在同一个表中的纬度 经度列上使用 正常 索引的查询要慢得多 至少 100 倍 但是查询计划显示索引
  • MySQL 更新具有多个值的查询

    我在数据库中有一个表 其记录如下 match id guess result 125 1 0 130 5 0 233 11 0 125 2 0 我的用户为每场比赛选择一个猜测 我有一个函数可以根据比赛的结果计算猜测的结果 如果猜测正确 结果
  • SQL Server 2012 中带有“AND”运算符的“LIKE”子句

    我的要求与该线程完全相同 如何在 SQL Server 中使用 JOIN LIKE 和 AND 运算符 https stackoverflow com questions 39745766 how to use join like with
  • ORACLE SQL 中的 MAX()

    我有一个表 存储已完成的维护任务的记录列表以及完成的日期和时间 我正在尝试执行子查询来提取具有最新日期的每个任务的记录 我的SQL语句是 SELECT ENGINEERING COMPLIANCE EO AS EO ENGINEERING
  • 当您有两种类型的记录时,该表的最佳数据库设计是什么

    我正在跟踪练习 我有一个workout表与 id 练习ID 外键进入练习表 现在 一些练习 例如重量训练 将包含以下字段 重量 次数 我刚刚举起 10 次 100 磅 跑步等其他练习将包含以下字段 时间 距离 我刚刚跑了5英里 花了1个小时
  • 从 LEFT OUTER JOIN 中删除重复项

    我的问题非常类似于限制 LEFT JOIN https stackoverflow com questions 757957 restricting a left join 有一个变体 假设我有一个表 SHOP 和另一个表 LOCATION
  • 从 SQL XML 列中的元素获取属性名称

    对于此 xml 在 SQL 2005 XML 列中
  • 从关键字后的文本中提取字符串

    我想从 SQL 字段中关键字后面的文本中提取内容 我有一个名为Description在表中 该字段的内容是 asdasf 关键字 狗 aeee 关键字 猫 ffffaa 关键词 狼 我想提取并保存 关键字 之后的文本 在本例中dog cat
  • 表值函数降低了我的查询性能

    今天我在尝试让查询按照我期望的方式执行时经历了一段可怕的时光 我不得不对昨天查询中的表值函数进行轻微更改 该更改对查询产生了巨大的性能影响 在评估执行计划并查看统计 IO 和时间后 我发现因为我更改了函数以返回表变量而不仅仅是结果集 所以它
  • 如何在 Hibernate 中使用 SELECT 进行 INSERT

    我需要在休眠中实现以下请求 insert into my table max column values select max id from special table where 如何在休眠中使用注释来做到这一点 Special tab
  • Knex 中的表的别名

    我有一个 SQL 查询两次引用同一个表 并且我需要将该表别名为两个单独的别名 我不太清楚如何用 Knex 来编写它 有一个 单词 表和一个 用户 表 Words 表有两个外键 author id 和 winner id 引用 Users 表

随机推荐

  • JQUERY 如何在拖动时禁用不允许的光标?

    我遇到了不允许的光标问题 拖动 拖动 元素时 出现不允许的光标 我无法再拖动它 我怎样才能防止这种情况发生 我想让我的 拖动 元素在鼠标按下时始终为 绝对 注意 我知道它可能因为 指针事件 而发生 但我需要将它包含在这段代码中 一些代码 d
  • 为 MVC2 AsyncController 构建单元测试

    我正在考虑将我的一些 MVC 控制器重写为异步控制器 我对这些控制器进行了工作单元测试 但我试图了解如何在异步控制器环境中维护它们 例如 目前我有这样的操作 public ContentResult Transaction do stuff
  • Bootstrap 3 Modal:如何使用 jquery/javascript 检查模式是否打开或关闭

    谁能告诉我如何检查 bootstrap 3 0 模式状态 它是使用 jQuery 或 javascript 打开还是关闭 我使用了以下代码 但当您打开模式一次时它会起作用 否则会出现数据未定义错误 if addMemberModal dat
  • 我在 C 中遇到超过时间限制的错误。如何克服它?

    c 性能分析时间限制编写该程序的目的的详细信息在链接上给出 https www spoj com problems CRCLE UI https www spoj com problems CRCLE UI 并且错误超过时间限制 inclu
  • JSF/RichFaces:条件文本样式

    我有一个可以是或否的字符串 在 Java 支持 bean 的对象中实例化 我似乎无法找到根据 JSF 是否从 bean 分别获得 是 或 否 来有条件地将文本设置为红色或绿色的最佳方法 我正在使用 richfaces 但我应该使用
  • 查找包括隐藏和折叠节点的逻辑子节点

    我尝试找到这个问题的答案 在我发现的每一篇文章中都有一个递归查找子项的答案 但它们都不适用于隐藏或折叠的子项 此外 在每一篇文章中 都有人问这是否可能 但没有人回答 所以我开始认为这是不可能的 如果有人有办法做到这一点 我将永远感激不已 我
  • SimpleDateFormat 解析 2 月 29 日的日期错误 [重复]

    这个问题在这里已经有答案了 我有这个有线 public static boolean isFirstDayOfMonth String format String value SimpleDateFormat sdf new SimpleD
  • 如何删除所有没有任何关系的节点 - neo4j/cypher

    我正在 neo4j 数据库中生成节点 并希望删除那些没有关系的节点 执行此操作的最佳密码指令是什么 Try MATCH n WHERE size n 0 DELETE n
  • 在 Firebase 中存储 id 列表

    我不知道如何用 firebase 解决这个问题 我有用户 每个用户都有帖子 每个帖子都有一个由 firebase 生成的 id 如何将这些 id 存储在用户节点中 我正在使用字符串 连接它们 在我的 js 应用程序中解析它们 基本上将它们视
  • 了解 Go 通道死锁

    package main import fmt time func main p producer for c range p fmt Println c func producer lt chan string ch make chan
  • 如何在Android Studio中制作选择器

    在学习课程时 我被指示为 Button 制作一个 xml 选择器 课程说要在 Eclipse 中制作新的 Android xml 但我使用的是 Android Studio 另外 当我自定义编写代码时 它会给我一个错误 它说 必须声明元素选
  • 如何使用JS下载视频标签?

    我有一个链接 我想从中下载视频
  • uitableview 在 iOS 中删除按钮图像

    我想更改 uitableview 单元格的滑动按钮图像 我已经搜索过了 但没有得到想要的结果 我用过这段代码 void willTransitionToState UITableViewCellStateMask state super w
  • 在一次调用中从多个表中选择

    在我的代码中 我有一个页面 其中包含来自 3 个不同表的信息 为了显示此信息 我进行了 3 个 SQL 选择调用 并将它们合并在一个列表中 以作为模型传递到我的视图 我可以通过一次 SQL 调用来完成此操作吗 数据之间没有任何联系 My c
  • 如何创建特定(R、G、B)颜色的 openCV 图像并获取该颜色名称?

    我需要创建一个填充一些 R G B 颜色的图像 并获得该颜色名称 例如 R G B 黑色或红色等 我们可以用 openCV 做这样的事情吗 如何做 具有静态方法的静态颜色图类 两个答案相结合 只需复制并使用即可 pragma once in
  • 按时间范围删除数据存储中的行

    我有一个 CKAN 数据存储 其中有一个名为 recvTime 的时间戳类型列 即在 datastore create 时使用 timestamp 作为类型 如这个链接所示 https github com telefonicaid fiw
  • 在php中从json_decode()获取值时出错?

    我有一个示例代码 description 2G Network GSM 850 900 1800 1900 3G Network HSDPA 850 900 1700 1900 2100 data json decode descripti
  • haskell中完整的缩进规则集

    从哪里可以获得 Haskell 代码编写的完整缩进规则集 过去的问题与我的以下问题类似 导致我提出上述问题 错误消息背后的原因是什么 parse error on input something 我收到的错误消息 Baby hs 103 2
  • 如何获取 git 中多个项目的任何分支中特定用户的提交列表?

    我在多个 git 项目的多个分支工作 我想获得所有这些项目和分支中特定日期的提交列表 用于时间表目的 虽然我可以为此目的编写实用程序脚本 但我不想重新发明轮子 有没有一种简单的方法可以使用现有的基于 UNIX 的工具或一些 git 高级用户
  • 选择两个 IP 范围之间的记录

    我有一张桌子 里面存放着ID Name Code IPLow IPHigh例如 1 Lucas 804645 192 130 1 1 192 130 1 254 2 Maria 222255 192 168 2 1 192 168 2 25