如何在Amazon Timestream中选取measure_value数组的首个元素?
提取字符串格式数组的第一个元素
针对类型为varchar的memory字段(示例值:[32603072,20213608,1314736]),不同数据库的处理方式如下:
PostgreSQL
可以先将字符串转为数组类型,直接取第一个元素:
SELECT (string_to_array(trim(memory, '[]'), ','))[1] AS first_memory_value FROM your_table;
trim(memory, '[]'):移除字符串两端的方括号string_to_array(..., ','):将处理后的字符串按逗号拆分为数组[1]:PostgreSQL数组下标从1开始,直接取第一个元素
MySQL
通过字符串函数组合提取:
SELECT SUBSTRING_INDEX(TRIM(BOTH '[]' FROM memory), ',', 1) AS first_memory_value FROM your_table;
TRIM(BOTH '[]' FROM memory):去掉字段值两端的方括号SUBSTRING_INDEX(..., ',', 1):按逗号拆分字符串,返回第一个部分
SQL Server
方法1:使用STRING_SPLIT(SQL Server 2016及以上版本)
SELECT TOP 1 value AS first_memory_value FROM your_table CROSS APPLY STRING_SPLIT(TRIM(memory, '[]'), ',') ORDER BY CHARINDEX(',' + value + ',', ',' + TRIM(memory, '[]') + ',');
方法2:字符串截取法
SELECT SUBSTRING( memory, CHARINDEX('[', memory) + 1, CHARINDEX(',', memory) - CHARINDEX('[', memory) - 1 ) AS first_memory_value FROM your_table WHERE memory LIKE '[%]';
CHARINDEX('[', memory) + 1:定位第一个元素的起始位置(跳过左方括号)CHARINDEX(',', memory) - ... -1:计算第一个元素的长度,截取对应内容
内容的提问来源于stack exchange,提问作者avrono
相关产品推荐
相关产品推荐

