gpt4 book ai didi

mysql - 在 MySQL 中快速将逗号分隔的字符串转换为列表

转载 作者:行者123 更新时间:2023-11-28 23:12:14 25 4
gpt4 key购买 nike

我有一个 mySQL 表,看起来像这样:

>> customer_table

customerId | list1 | list2 | list3
--------------------------------------------
0 | 0,1,2,3 | 3,2,443,3| 3,55,3,4
--------------------------------------------
1 | 5,1,8,9 | 5,2,41,6 | 1,5,3,90

列 customerId 是一个 int 主键。其余字段是存储在 mediumtext 字段中的逗号分隔字符串列表(因此 list1 为“0,1,2,3”等)。每个 mediumtext 字段大约有 500,000 个字符长(其中将近 120,000 个数字)非常大。

我想查询此表,以便我可以快速将列表转换为数字,然后获取该已解析列表的第 i 个元素并返回它们。我将主要一次查询一行 customer_table,但如果过程很快,有时可能会查询更多。伪代码(写得不好)看起来像这样

>> select csv_parsed(list1) # need to search a parsed version of the list
from customer_table
where customerId = 0
and index = 0 or index = 1 or index = 4 # These are the ith elements of the parsed list

应该返回如下内容:

>> customerId | 0  | 1 | 4 
-----------------------
0 | 0 | 1 | 3

最佳答案

SQL 不支持具有动态选择列表的查询。选择列表中的列在准备查询时是固定的,执行期间发现的数据无法扩展或重命名选择列表中的列。

您可能想看看 SUBSTRING_INDEX() .这是 MySQL 中的一个内置函数,可以挑选出由您想要的字符分隔的子字符串。

select customerId, 
substring_index(substring_index(list1, ',', 1), ',', -1) AS 0,
substring_index(substring_index(list1, ',', 2), ',', -1) AS 1,
substring_index(substring_index(list1, ',', 4), ',', -1) AS 4,
from customer_table
where customerId = 0

下次,如果您想处理列表中的单个元素,请不要将数据存储在逗号分隔的字符串中。

关于mysql - 在 MySQL 中快速将逗号分隔的字符串转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45448750/

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