如何爆发mysql字段值并在SELECT查询中使用它

时间:2010-10-25 07:22:01

标签: mysql

如何在select查询中分解表的字段值?

例如我在表中有一个名为“coordinates”的字段,其中包含纬度,经度。

现在我想在选择查询中使用这个纬度和经度。

我可以将这些值分开并在选择查询中使用吗?

1 个答案:

答案 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_xcoordinate_y进行索引,以使您的select语句快速运行。