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

如何在MS SQL中创建虚拟表并为音乐家数据新增Band列

解决方案:基于ID生成Band列

看起来你需要根据音乐家的ID生成格式化的Band列,结合你的示例ID(911、912、913、914),推测规则是生成B+序号的格式(比如911对应B1,912对应B2)。下面分几种常见数据库给出具体实现方案:

核心思路

要么提取ID中用于生成序号的部分(比如最后一位数字),要么通过ID与基准值的差值得到序号,再拼接前缀B即可。两种方式各有适用场景,你可以按需选择。

方式1:提取ID最后一位生成Band(适合ID最后一位直接对应序号的场景)

MySQL/MariaDB

使用RIGHT()函数获取ID最后一位,再用CONCAT()拼接前缀:

SELECT 
    ID, 
    NAME, 
    PARAM,
    CONCAT('B', RIGHT(ID, 1)) AS Band
FROM TABLE;

PostgreSQL

需要先把ID转为文本类型,再用字符串拼接:

SELECT 
    ID, 
    NAME, 
    PARAM,
    'B' || RIGHT(ID::TEXT, 1) AS Band
FROM TABLE;

SQL Server

直接用RIGHT()提取后拼接:

SELECT 
    ID, 
    NAME, 
    PARAM,
    'B' + RIGHT(ID, 1) AS Band
FROM TABLE;

方式2:通过计算差值生成Band(适合ID连续递增的场景)

如果后续ID可能不是91x格式(比如变成1001、1002),用ID减去基准值(示例中基准值为910)得到序号会更可靠:

SELECT 
    ID, 
    NAME, 
    PARAM,
    CONCAT('B', ID - 910) AS Band
FROM TABLE;

预期查询结果

用上述任意方案处理你的数据后,会得到如下结果:

ID NAME PARAM Band
911 John Name B1
911 Guitar Instr 1 B1
911 Piano Instr 2 B1
912 Paul Name B2
912 Bass Instr 1 B2
912 Piano Instr 2 B2
912 Guitar Instr 3 B2
913 Freddie Name B3
913 Piano Instr 1 B3
913 Guitar Instr 2 B3
914 Brian Name B4
914 Guitar Instr 1 B4

如果你的Band生成规则和我推测的不一样,比如需要按其他逻辑分组,可以补充细节,我再调整方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:01:28