SQL Server 判断 IP 地址是否在指定范围内
在 SQL Server 数据库中,可以使用`PARSENAME`函数将 IP 地址拆分为四个部分,并使用`CONVERT`函数将每个部分转换为整数。然后,可以使用逻辑运算符和比较运算符进行条件判断。以下是一个示例 SQL 语句:\n\nsql\nDECLARE @ipStart VARCHAR(15) = '10.73.4.111'\nDECLARE @ipEnd VARCHAR(15) = '10.73.4.210'\nDECLARE @ipToCheck VARCHAR(15) = '10.73.4.112'\n\nSELECT CASE\n WHEN \n (CONVERT(INT, PARSENAME(@ipToCheck, 4)) BETWEEN CONVERT(INT, PARSENAME(@ipStart, 4)) AND CONVERT(INT, PARSENAME(@ipEnd, 4))) AND\n (CONVERT(INT, PARSENAME(@ipToCheck, 3)) BETWEEN CONVERT(INT, PARSENAME(@ipStart, 3)) AND CONVERT(INT, PARSENAME(@ipEnd, 3))) AND\n (CONVERT(INT, PARSENAME(@ipToCheck, 2)) BETWEEN CONVERT(INT, PARSENAME(@ipStart, 2)) AND CONVERT(INT, PARSENAME(@ipEnd, 2))) AND\n (CONVERT(INT, PARSENAME(@ipToCheck, 1)) BETWEEN CONVERT(INT, PARSENAME(@ipStart, 1)) AND CONVERT(INT, PARSENAME(@ipEnd, 1)))\n THEN 'YES'\n ELSE 'NO'\nEND AS 'IsInIPRange'\n\n\n在上述示例中,我们首先声明了三个变量`@ipStart`,`@ipEnd`和`@ipToCheck`,分别表示 IP 段的起始、结束地址以及要检查的 IP 地址。\n\n然后,使用`PARSENAME`函数将这些 IP 地址拆分为四个部分,每个部分之间使用`.`分隔,并使用`CONVERT`函数将每个部分转换为整数。\n\n最后,使用`CASE`语句和逻辑运算符进行条件判断,如果要检查的 IP 地址在指定的 IP 段范围内,则返回'YES',否则返回'NO'。
原文地址: https://www.cveoy.top/t/topic/pT9J 著作权归作者所有。请勿转载和采集!