MySQL空间地理位置字段: geometry

 

CREATE TABLE `zone_area` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `location` geometry DEFAULT NULL,
  `geohash` varchar(20) GENERATED ALWAYS AS (st_geohash(`location`,8)) VIRTUAL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT=;
ALTER TABLE zone_area ADD COLUMN `geohash` varchar(20) GENERATED ALWAYS AS (st_geohash(`location`,8)) VIRTUAL;

 

字段: 使用geometry类型存储空间点数据;

存储: SET location = geomfromtext(‘point(108.9498710632 34.2588125935)‘));

搜索: 查询方圆5公里数据? geohash字段是将二维通过geohash算法变成一维;

 

虚拟自增列 Generated Column是MySQL 5.7引入的新特性,Cenerated Column,就是数据库中这一列由其他列计算而得。
generated column always总是自动生成

 

 

FLOOR(X)表示向下取整,只返回值X的整数部分,小数部分舍弃。
CEILING(X) 表示向上取整,只返回值X的整数部分,小数部分舍弃。
#DECIMAL 四舍五入
SELECT CAST(‘123.456‘ AS DECIMAL) #123
SELECT CAST(‘123.456‘ AS DECIMAL(10,2)) #123.46
ROUND(X) -- 四舍五入
SELECT ROUND(‘123.456‘) #123
SELECT ROUND(‘123.456‘,2) #123.46

MySQL空间地理位置字段: geometry

上一篇:MySQLWindows配置文件


下一篇:EFCore中提前将表达式转换成Sql并返回IQueryable 类型的数据避免转换失败