You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2014:将LongText列冒号前后内容拆分为属性值两列

当然可以!要把这个包含属性-值对的LongText列拆分成Attribute和Value两列,咱们可以根据你使用的数据库来选择对应的实现方法,下面是几个主流数据库的具体方案:

1. SQL Server 实现方案(2016及以上版本)

因为你的属性对之间是用「, 」(逗号加空格)分隔的,而值里的逗号没有空格,所以我们可以先按这个分隔符拆分出每个单独的属性-值字符串,再拆分冒号前后的内容:

-- 示例表和数据,替换成你的实际表名和列名
DECLARE @YourTable TABLE (LongTextColumn LONGTEXT);
INSERT INTO @YourTable VALUES ('TYPE: SOLID WEDGE 1,SOLID WEDGE 2, VALVE SIZE: 1 IN, PRESSURE RATING: 800 LB, CONNECTION TYPE: SOCKET WELD, BONNET STYLE: BOLTED');

SELECT
    -- 提取冒号前的属性名
    TRIM(SUBSTRING(split_item, 1, CHARINDEX(': ', split_item) - 1)) AS Attribute,
    -- 提取冒号后的属性值
    TRIM(SUBSTRING(split_item, CHARINDEX(': ', split_item) + 2, LEN(split_item))) AS Value
FROM @YourTable
-- 按「, 」拆分每个属性-值对
CROSS APPLY STRING_SPLIT(LongTextColumn, ', ') AS split_pairs
-- 过滤掉可能的无效项
WHERE split_item LIKE '%: %';
2. MySQL 实现方案(8.0及以上版本)

MySQL可以借助JSON_TABLE来实现字符串拆分,先把原字符串转换成JSON数组,再拆分处理:

-- 替换成你的实际表和列
SET @long_text = 'TYPE: SOLID WEDGE 1,SOLID WEDGE 2, VALVE SIZE: 1 IN, PRESSURE RATING: 800 LB, CONNECTION TYPE: SOCKET WELD, BONNET STYLE: BOLTED';

SELECT
    TRIM(SUBSTRING(split_item, 1, LOCATE(': ', split_item) - 1)) AS Attribute,
    TRIM(SUBSTRING(split_item, LOCATE(': ', split_item) + 2)) AS Value
FROM
    -- 把字符串转成JSON数组,拆分出每个属性-值对
    JSON_TABLE(
        CONCAT('["', REPLACE(@long_text, ', ', '","'), '"]'),
        '$[*]' COLUMNS (split_item VARCHAR(255) PATH '$')
    ) AS split_pairs
WHERE split_item LIKE '%: %';
3. PostgreSQL 实现方案

PostgreSQL用string_to_array和unnest组合来拆分字符串,再用SPLIT_PART拆分属性和值:

-- 替换成你的实际表和列
WITH your_table AS (
    SELECT 'TYPE: SOLID WEDGE 1,SOLID WEDGE 2, VALVE SIZE: 1 IN, PRESSURE RATING: 800 LB, CONNECTION TYPE: SOCKET WELD, BONNET STYLE: BOLTED' AS long_text_column
)
SELECT
    -- 按「: 」拆分取第一部分作为属性
    TRIM(SPLIT_PART(split_item, ': ', 1)) AS Attribute,
    -- 按「: 」拆分取第二部分作为值
    TRIM(SPLIT_PART(split_item, ': ', 2)) AS Value
FROM your_table,
     -- 按「, 」拆分字符串并转成行
     unnest(string_to_array(long_text_column, ', ')) AS split_item
WHERE split_item LIKE '%: %';

注意事项

  • 确保原字符串的格式是固定的:属性和值之间是「: 」(冒号加空格),属性对之间是「, 」(逗号加空格),如果有格式不一致的情况,需要调整分隔符或者添加额外的处理逻辑。
  • 如果是旧版本数据库(比如SQL Server 2016之前),可以用递归CTE来实现自定义字符串拆分功能。

内容的提问来源于stack exchange,提问作者Sai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:51:25