SQL数据拆分:如何将品牌列中的型号数据分离至型号列?
表格数据拆分需求与解决方案
原始数据表格
| 品牌 | 型号 |
|---|---|
| Audi R8 | NULL |
| Audi RS2 | NULL |
理想效果表格
我的理想表格
| 品牌 | 型号 |
|---|---|
| Audi | R8 |
| Audi | RS2 |
需求:将品牌列中包含的型号数据(如R8、RS2、RS4等)分离出来,写入型号列。
实用解决方法
1. Excel/Google Sheets 可视化操作
- 分列法:
- 选中品牌列,点击「数据」→「分列」,选择「分隔符号」,勾选「空格」作为分隔符,完成后品牌和型号会分成两列。
- 将拆分出的型号列内容复制到原型号列,删除临时拆分列,保留品牌列的品牌部分。
- 公式批量提取:
假设品牌列在A1单元格,在其他单元格输入:- 提取品牌:
=LEFT(A1,FIND(" ",A1)-1) - 提取型号:
=RIGHT(A1,LEN(A1)-FIND(" ",A1))
下拉公式批量应用后,复制结果并「粘贴为值」即可。
- 提取品牌:
2. Python Pandas 代码处理
适合批量处理大量数据:
import pandas as pd # 读取原始表格(示例为CSV格式,可替换为Excel等格式) df = pd.read_csv("car_data.csv") # 按第一个空格拆分品牌列,生成品牌和型号列 df[["品牌", "型号"]] = df["品牌"].str.split(" ", n=1, expand=True) # 保存处理后的表格 df.to_csv("processed_car_data.csv", index=False)
n=1 参数确保只按第一个空格拆分,避免型号中包含空格的异常情况。
3. SQL 数据库操作
若数据存储在数据库中,可通过字符串函数批量更新:
-- 先验证拆分结果 SELECT SUBSTRING(brand, 1, CHARINDEX(' ', brand) - 1) AS 品牌, SUBSTRING(brand, CHARINDEX(' ', brand) + 1, LEN(brand)) AS 型号 FROM car_table WHERE CHARINDEX(' ', brand) > 0; -- 确认无误后执行更新 UPDATE car_table SET brand = SUBSTRING(brand, 1, CHARINDEX(' ', brand) - 1), model = SUBSTRING(brand, CHARINDEX(' ', brand) + 1, LEN(brand)) WHERE CHARINDEX(' ', brand) > 0;
注意:执行更新前建议备份数据。
内容的提问来源于stack exchange,提问作者B.12
相关产品推荐
相关产品推荐

