【问题标题】:MS SQL Server 2008 - Extract 1st 3 octets of IP addressMS SQL Server 2008 - 提取 IP 地址的前 3 个八位字节
【发布时间】:2014-08-26 20:06:00
【问题描述】:

我正在使用 MS SQL Server 2008,我正在尝试提取 IP 地址的前 3 个八位字节

我试过Extract 1st Three Octets of an IPV4的解决方案,但是SUBSTRING_INDEX不是内置函数名

select SUBSTRING_INDEX(IP_Address, '.',3) as octet, COUNT(*) as C
from ...
where ...

我可以使用什么功能?

【问题讨论】:

  • 这可能是一个 MySQL 函数,试试SUBSTRINGCHARINDEX 一起使用。
  • 这与答案是substring_index() 的实现的问题并不完全相同。正如@RickS 指出的那样,SQL Server 中有一个内置函数可以执行此操作。
  • 该死,我希望我是唯一一个知道 PARSENAME 的人。 :)

标签: sql sql-server string


【解决方案1】:

这可能会帮助您了解如何使用。

这是小提琴,尽管此时它似乎遇到了间歇性连接问题: http://www.sqlfiddle.com/#!3/55cda0/15

基本上您可以使用以下代码选择值:

SELECT LEFT(IP_Address, LEN(IP_Address) - CHARINDEX('.',REVERSE (IP_Address))) FROM IP

首先,它围绕字符串旋转,它会查找第一个(实际上是最后一个,哈哈!)点(或您设置的任何分隔符)。

在此之后,您只需选择剩余字符串的最左边,它从总长度中减去分隔符的位置;因此摆脱最后一个分隔符之后的任何内容 - 在您的情况下是一个点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多