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

如何在Azure SQL数据库中从URL提取Steam AppId

在Azure SQL数据库中提取Steam AppId并插入到目标表

需求说明

我有一个存储URL的表,数据示例如下,需要提取/app/后的数字(Steam AppId)并插入到另一个表的INT列中。这些数字后可能带有结尾斜杠或多余无关文本:

https://store.steampowered.com/app/123
https://store.steampowered.com/app/1234/
https://store.steampowered.com/app/1234567800/some_game_title/
https://store.steampowered.com/app/999https://baddata.com

期望提取结果:

123
1234
1234567800
999

实现方案

Azure SQL数据库支持REGEXP_SUBSTR函数,可基于正则表达式精准提取目标内容,具体操作如下:

1. 提取AppId的查询语句

使用REGEXP_SUBSTR匹配/app/后的连续数字,确保只提取有效数字部分:

SELECT 
    REGEXP_SUBSTR(url_column, '\/app\/(\d+)', 1, 1, 'c', 1) AS steam_app_id
FROM 
    你的源表名;
  • 参数说明:
    • url_column:存储URL的列名
    • '\/app\/(\d+)':正则表达式,匹配/app/后连续的数字(\d+确保至少匹配一个数字,比\d*更严谨)
    • 1, 1:从字符串第1位开始,取第1个匹配结果
    • 'c':区分大小写(此处不影响,可省略)
    • 1:返回第1个捕获组的内容(即括号内的数字)

2. 插入到目标表

将提取结果转换为INT类型后插入目标表,用INSERT...SELECT语句完成:

INSERT INTO 你的目标表名(app_id列名)
SELECT 
    CAST(REGEXP_SUBSTR(url_column, '\/app\/(\d+)', 1, 1, 'c', 1) AS INT)
FROM 
    你的源表名
WHERE 
    REGEXP_SUBSTR(url_column, '\/app\/(\d+)', 1, 1, 'c', 1) IS NOT NULL;
  • 添加WHERE子句是为了过滤未匹配到有效AppId的行,避免向INT列插入NULL导致报错

3. 特殊情况处理

针对https://store.steampowered.com/app/999https://baddata.com这类AppId后紧跟无关字符的URL,上述正则会自动在遇到非数字字符时停止匹配,准确提取出999。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:25:25