
# IP地址函数
本文介绍IP地址函数的语法规则，包括参数解释、函数示例等。
#### 使用限制
LTS提供的IP与地域之间的关系，来自于第三方IP库，且数据是周期性更新（约半年），不承诺IP与地域关系完全正确；后续LTS会优化，缩短IP库的更新周期，为用户提供更好的体验。
**单IP函数聚合查询的数据量上限为500万，查询的数据超出上限可能导致查询超时。**
#### 函数列表
表1IP地址函数 
| 函数                                                                                                                                                                                                                    | 描述                     |
|:---|:---|
| [ip_to_domain函数]        | 判断目标IPv4地址是内网地址还是外网地址。 |
| [ip_prefix函数]           | 获取目标IPv4地址的前缀。         |
| [is_prefix_subnet_of函数] | 判断目标IPv4网段是否为某网段的子网。   |
| [is_subnet_of函数]        | 判断目标IPv4地址是否在某网段内。     |
| [ip_subnet_max函数]       | 获取IPv4网段中的最大IP地址。      |
| [ip_subnet_min函数]       | 获取IPv4网段中的最小IP地址。      |
| [ip_subnet_range函数]     | 获取IPv4网段范围。            |
| [ip_to_country函数]                                                                                                                                     | 返回IPv4地址所属国家或地区。       |
| [ip_to_country_code函数]                                                                                                                              | 返回IPv4地址所在国家编码。        |
| [ip_to_city函数]        | 返回IPv4地址所在城市的名称。       |
| [ip_to_provider函数]   | 返回IPv4地址的网络运营商的名称。     |
| [ipv6_to_country函数]                                                                                       | 返回IPv6地址所属国家或地区。       |
| [ipv6_to_country_code函数]                                                                                      | 返回IPv6地址所在的国家编码。       |
| [ipv6_to_province函数]                                                                                          | 返回IPv6地址所在省级行政区域名称。    |
| [ipv6_to_city函数]                                                                                          | 返回IPv6地址所在城市的名称。       |
| [ipv6_to_provider函数]                                                                                        | 返回IPv6地址对应的网络服务供应商。    |
| [ipv6_to_city_geo函数]                                                                                        | 返回IPv6地址对应城市的经纬度信息。    |
| [ipv6_to_geo函数]                                                                                             | 返回IPv6地址对应城市的经纬度信息。    |
| [ipv6_to_domain函数]                                                                                           | 判断是否为内网地址。             |
   
 #### ip_to_domain函数
判断目标IPv4地址是内网地址还是外网地址。
语法：ip_to_domain(expr)
表2参数说明 
| 参数名称 | 描述   | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr | IP地址 | String | 是    |
   
返回值类型：String类型
示例：SELECT IP_TO_DOMAIN('10.110.10.210'), IP_TO_DOMAIN('192.175.4.1')
表3查询分析结果 
| 类型  | 查询语句                          | 返回结果     |
|:---|:---|:---|
| 场景1 | IP_TO_DOMAIN('10.110.10.210') | intranet |
| 场景2 | IP_TO_DOMAIN('192.175.4.1')   | internet |
   
 #### ip_prefix函数
获取目标IPv4地址的前缀。
语法：ip_prefix(expr, prefixBit)
表4参数说明 
| 参数名称      | 描述     | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr      | IPv4地址 | String | 是    |
| prefixBit | 前缀位数   | String | 是    |
   
返回值类型：String类型
示例：SELECT IP_PREFIX('10.110.10.210', 8), IP_PREFIX('144.101.32.5', 12)
表5查询分析结果 
| 类型  | 查询语句                          | 返回结果          |
|:---|:---|:---|
| 场景1 | IP_PREFIX('10.110.10.210', 8) | 10.0.0.0/8    |
| 场景2 | IP_PREFIX('144.101.32.5', 12) | 144.96.0.0/12 |
   
 #### is_prefix_subnet_of函数
判断目标IPv4网段是否为某网段的子网。
语法：is_prefix_subnet_of(expr1, expr2)
表6参数说明 
| 参数名称  | 描述        | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr1 | 给定的IPv4网段 | String | 是    |
| expr2 | 目标IPv4网段  | String | 是    |
   
返回值类型：Boolean类型
示例：SELECT IS_PREFIX_SUBNET_OF('192.168.0.1/24', '192.168.1.1/24')
表7查询分析结果 
| 类型 | 查询语句                                                    | 返回结果  |
|:---|:---|:---|
| 场景 | IS_PREFIX_SUBNET_OF('192.168.0.1/24', '192.168.1.1/24') | false |
   
 #### is_subnet_of函数
判断目标IPv4地址是否在某网段内。
语法：is_subnet_of(expr1, expr2)
表8参数说明 
| 参数名称  | 描述        | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr1 | 给定的IPv4网段 | String | 是    |
| expr2 | 目标IPv4地址  | String | 是    |
   
返回值类型：Boolean类型
示例：SELECT IS_SUBNET_OF('192.168.0.1/24', '192.168.1.1')
表9查询分析结果 
| 类型 | 查询语句                                          | 返回结果  |
|:---|:---|:---|
| 场景 | IS_SUBNET_OF('192.168.0.1/24', '192.168.1.1') | false |
   
 #### ip_subnet_max函数
获取IPv4网段中的最大IP地址。
语法：ip_subnet_max(expr)
表10参数说明 
| 参数名称 | 描述     | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr | IPv4网段 | String | 是    |
   
返回值类型：String类型
示例：SELECT IP_SUBNET_MAX('192.120.80.128/10')
表11查询分析结果 
| 类型 | 查询语句                               | 返回结果            |
|:---|:---|:---|
| 场景 | IP_SUBNET_MAX('192.120.80.128/10') | 192.127.255.255 |
   
 #### ip_subnet_min函数
获取IPv4网段中的最小IP地址。
语法：ip_subnet_min(expr)
表12参数说明 
| 参数名称  | 描述     | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr1 | IPv4网段 | String | 是    |
   
返回值类型：String类型
示例：SELECT IP_SUBNET_MIN('192.120.80.128/10')
表13查询分析结果 
| 类型 | 查询语句                               | 返回结果       |
|:---|:---|:---|
| 场景 | IP_SUBNET_MIN('192.120.80.128/10') | 192.64.0.0 |
   
 #### ip_subnet_range函数
获取IPv4网段范围。
语法：ip_subnet_range(expr)
表14参数说明 
| 参数名称  | 描述     | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr1 | IPv4网段 | String | 是    |
   
返回值类型：String类型
示例：SELECT IP_SUBNET_RANGE('192.120.80.128/10')
表15查询分析结果 
| 类型 | 查询语句                                  | 返回结果                               |
|:---|:---|:---|
| 场景 | IP_SUBNET_RANGE ('192.120.80.128/10') | \["192.64.0.0","192.127.255.255"\] |
   
在计算给定网段的最大IP地址、最小IP地址和IP范围时，排除了网段的单播和广播地址，计算出的IP地址为网段的最大可用IP地址、最小可用IP地址和可用IP地址范围。
 #### ip_to_country函数
返回IPv4地址所属国家或地区。
语法：ip_to_country(x)
表16参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv4地址 | String | 是    |
   
返回值类型：String类型
示例：select ip_to_country(ip)
表17查询分析结果 
| 类型 | 查询语句              | 返回结果 |
|:---|:---|:---|
| 场景 | ip_to_country(ip) | CN   |
   
 #### ip_to_country_code函数
返回IPv4地址所在国家编码。
语法：ip_to_country_code(x)
表18参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv4地址 | String | 是    |
   
返回值类型：String类型
示例：select ip_to_country_code(ip)
表19查询分析结果 
| 类型 | 查询语句                   | 返回结果 |
|:---|:---|:---|
| 场景 | ip_to_country_code(ip) | CN   |
   
 #### ip_to_city函数
返回城市的名称。
语法：ip_to_city(x)
表20参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv4地址 | String | 是    |
   
返回值类型：String类型
示例：select ip_to_city(ip)
表21查询分析结果 
| 类型 | 查询语句           | 返回结果    |
|:---|:---|:---|
| 场景 | ip_to_city(ip) | Cochise |
   
 #### ip_to_provider函数
返回IPv4地址的网络运营商的名称。
语法：ip_to_provider(x)
表22参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv4地址 | String | 是    |
   
返回值类型：String类型
示例：select ip_to_provider(ip)
表23查询分析结果 
| 类型 | 查询语句               | 返回结果      |
|:---|:---|:---|
| 场景 | ip_to_provider(ip) | CONUS-YPG |
   
 #### ipv6_to_country函数
返回IPv6地址所属国家或地区。
语法：ipv6_to_country(x)
表24参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv6地址 | String | 是    |
   
返回值类型：String类型
示例：select ipv6_to_country(ip)
表25查询分析结果 
| 类型 | 查询语句                | 返回结果 |
|:---|:---|:---|
| 场景 | ipv6_to_country(ip) | 中国   |
   
 #### ipv6_to_country_code函数
返回IPv6地址所在国家编码。
语法：ipv6_to_country_code(x)
表26参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv6地址 | String | 是    |
   
返回值类型：String类型
示例：select ipv6_to_country_code(ip)
表27查询分析结果 
| 类型 | 查询语句                     | 返回结果 |
|:---|:---|:---|
| 场景 | ipv6_to_country_code(ip) | CN   |
   
 #### ipv6_to_province函数
返回IPv6地址所在省级行政区域名称。
语法：ipv6_to_province(x)
表28参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv6地址 | String | 是    |
   
返回值类型：String类型
示例：select ipv6_to_province(ip)
表29查询分析结果 
| 类型 | 查询语句                 | 返回结果 |
|:---|:---|:---|
| 场景 | ipv6_to_province(ip) | 陕西省  |
   
 #### ipv6_to_city函数
返回IPv6地址所在城市的名称。
语法：ipv6_to_city(x)
表30参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv6地址 | String | 是    |
   
返回值类型：String类型
示例：select ipv6_to_city(ip)
表31查询分析结果 
| 类型 | 查询语句             | 返回结果 |
|:---|:---|:---|
| 场景 | ipv6_to_city(ip) | 西安市  |
   
 #### ipv6_to_provider函数
返回IPv6地址对应的网络服务供应商。
语法：ipv6_to_provider(x)
表32参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv6地址 | String | 是    |
   
返回值类型：String类型
示例：select ipv6_to_provider(ip)
表33查询分析结果 
| 类型 | 查询语句                 | 返回结果 |
|:---|:---|:---|
| 场景 | ipv6_to_provider(ip) | 中国电信 |
   
 #### ipv6_to_city_geo函数
返回IPv6地址对应城市的经纬度信息。
语法：ipv6_to_city_geo(x)
表34参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv6地址 | String | 是    |
   
返回值类型：String类型
示例：select ipv6_to_city_geo(ip)
表35查询分析结果 
| 类型 | 查询语句                 | 返回结果                 |
|:---|:---|:---|
| 场景 | ipv6_to_city_geo(ip) | 39.904989,116.405285 |
   
 #### ipv6_to_geo函数
返回IPv6地址对应城市的经纬度信息。
语法：ipv6_to_geo(x)
表36参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv6地址 | String | 是    |
   
返回值类型：String类型
示例：select ipv6_to_geo(ip)
表37查询分析结果 
| 类型 | 查询语句            | 返回结果                 |
|:---|:---|:---|
| 场景 | ipv6_to_geo(ip) | 39.904989,116.405285 |
   
 #### ipv6_to_domain函数
判断是否为内网地址。
语法：ipv6_to_domain(x)
表38参数说明 
| 参数名称 | 描述         | 类型     | 是否必选 |
|:---|:---|:---|:---|
| x    | 参数值为IPv6地址 | String | 是    |
   
返回值类型：String类型
示例：select ipv6_to_domain(ip)
表39查询分析结果 
| 类型 | 查询语句               | 返回结果     |
|:---|:---|:---|
| 场景 | ipv6_to_domain(ip) | internet |
   
