gpt4 book ai didi

php - 如何构建 mySQL 函数来访问 K2 extra_fields

转载 作者:行者123 更新时间:2023-11-30 00:04:19 25 4
gpt4 key购买 nike

我需要一个接受 4 个参数的函数,以便使用 K2 extra_fields 进行一些计算,并将结果返回到 SELECT 语句中。

我需要函数来计算两点之间的距离。第一个点的坐标可在项目的 extra_fields 中找到。第二个点的坐标将在 php 脚本中手动给出。

我的extra_fields包含:

[{"id":"1","value":"40.111"},{"id":"2","value":"20.222"}]

其中 id[1] 和 id[2] 是坐标(纬度和经度)。

SELECT 语句应如下所示:

SELECT id, title, **FUNCTION_GOES_HERE** AS 'distance'
FROM k2_items;

我不是在寻找距离计算算法。问题是如何从 extra_fields 字段中提取坐标。有什么想法吗?

最佳答案

因为您无法更改表格设计,所以您必须进行一些繁琐的字符串解析。这是一个例子:

SELECT 
SUBSTRING_INDEX(SUBSTRING_INDEX(extra_fields, '"value":"', -2), '"', 1) as latitude,
SUBSTRING_INDEX(SUBSTRING_INDEX(extra_fields, '"value":"', -1), '"', 1) as longitude
FROM k2_items;

<强> DEMO

说明:

我们在这些值中找到了两次子字符串“value”:”:

[{"id":"1","value":"40.111"},{"id":"2","value":"20.222"}]
^ first time ^ second time

SUBSTRING_INDEX(extra_fields, '"value":"', -2

将为我们提供示例数据,从我们的针的倒数第二次出现之后开始的子字符串,这里是第一次出现:

40.111"},{"id":"2","value":"20.222"}]

对于纬度,我们需要子字符串直到下一个双引号。这是一个简单的:SUBSTRING_INDEX(haystack,needle,1),其中第一个表达式为 haystack,双引号为needle。

SUBSTRING_INDEX(SUBSTRING_INDEX(extra_fields, '"value":"', -2), '"', 1)

给了我们想要的结果:

40.111

通过相同的逻辑,我们将获得经度。

关于php - 如何构建 mySQL 函数来访问 K2 extra_fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24721965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com