如何在select查询中分解表的字段值?
例如我在表中有一个名为“coordinates”的字段,其中包含纬度,经度。
现在我想在选择查询中使用这个纬度和经度。
我可以将这些值分开并在选择查询中使用吗?
答案 0 :(得分:1)
首先,评论是正确的:这违反了正常形式。始终将单独的数据存储在不同的列中 - 这将使您的生活更轻松。
如果您尝试编写一个解析coordinates
字段并尝试过滤一半或两半的select语句,那么您将有一个缓慢运行SUPER的查询,因为该列上的索引将无法运行。相反,我建议编写一个查询将该列拆分为两个,如下所示:
alter table `your_table`
add column `coordinate_x` int null;
alter table `your_table`
add column `coordinate_y` int null;
update `your_table`
set `coordinate_x` = substring(`coordinates`,1,locate(',',`coordinates`))
,`coordinate_y`= substring(`coordinates`,locate(',',`coordinates`)+1);
alter table `your_table`
drop column `coordinates`;
alter table `your_table`
modify column `coordinate_x` int not null;
alter table `your_table`
modify column `coordinate_y` int not null;
然后,您可以对coordinate_x
和coordinate_y
进行索引,以使您的select语句快速运行。