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

如何从SQL表的subject列提取VR开头Job No与日期?

提取Subject列中的Job No和日期的SQL查询语句

根据你提供的Subject列格式(固定包含Job No:VRxxxxxx on YYYY-MM-DD结构),以下是不同SQL数据库对应的查询语句,用于提取VR开头的Job No和日期:

MySQL/MariaDB

使用SUBSTRING_INDEX函数逐层截取目标内容:

SELECT
  -- 提取Job No:先截取到" on "之前的部分,再取"Job No:"之后的内容
  SUBSTRING_INDEX(SUBSTRING_INDEX(subject, ' on ', 1), 'Job No:', -1) AS job_no,
  -- 提取日期:直接截取" on "之后的所有内容(日期为固定格式,此处无需额外长度限制)
  SUBSTRING_INDEX(subject, ' on ', -1) AS job_date
FROM your_table_name;

SQL Server

使用CHARINDEX定位关键字符串位置,再用SUBSTRING截取:

SELECT
  -- 提取Job No:计算"Job No:"和" on "之间的位置差,截取中间内容
  SUBSTRING(
    subject,
    CHARINDEX('Job No:', subject) + 7, -- "Job No:"共7个字符,跳过这部分
    CHARINDEX(' on ', subject) - CHARINDEX('Job No:', subject) - 7
  ) AS job_no,
  -- 提取日期:从" on "之后开始截取10位(YYYY-MM-DD固定为10位)
  SUBSTRING(
    subject,
    CHARINDEX(' on ', subject) + 4, -- " on "共4个字符(空格+on+空格),跳过这部分
    10
  ) AS job_date
FROM your_table_name;

PostgreSQL

利用正则表达式直接匹配目标内容,写法更简洁:

SELECT
  -- 匹配VR开头的Job No
  SUBSTRING(subject FROM 'Job No:(VR\d+)') AS job_no,
  -- 匹配YYYY-MM-DD格式的日期
  SUBSTRING(subject FROM '(\d{4}-\d{2}-\d{2})') AS job_date
FROM your_table_name;

Oracle

使用INSTR定位位置,SUBSTR截取内容:

SELECT
  -- 提取Job No
  SUBSTR(
    subject,
    INSTR(subject, 'Job No:') + 7,
    INSTR(subject, ' on ') - INSTR(subject, 'Job No:') - 7
  ) AS job_no,
  -- 提取日期:截取10位固定长度的日期格式
  SUBSTR(subject, INSTR(subject, ' on ') + 4, 10) AS job_date
FROM your_table_name;

注意:请将上述语句中的your_table_name替换为你的实际表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:55:24