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

如何在Azure中去除alphanumeric字段中字母后的前导零以精简报表展示

字段前导零移除实现方案

核心逻辑为拆分字母前缀与后续10位数字段,将数字段转为整数自动清除前导零后再与前缀拼接,以下为不同Azure数据库场景的实现代码:

Azure SQL(SQL Server)

-- 假设待处理字段名为doc_code,表名为your_table
SELECT 
  LEFT(doc_code, PATINDEX('%[0-9]%', doc_code) - 1) 
  + CAST(CAST(SUBSTRING(doc_code, PATINDEX('%[0-9]%', doc_code), 10) AS BIGINT) AS VARCHAR(10)) 
  AS processed_doc_code
FROM your_table

测试样例输入DEAP0000013169,输出为DEAP13169,符合需求。

如果你的字段是包含编码、日期等内容的混合字符串(如示例中的SALDOC.RELDOCSDATE DEAP0000013169 3/12/2021),需先提取目标编码段再处理:

WITH extract_code AS (
  SELECT SUBSTRING(raw_field, PATINDEX('%[A-Za-z]+[0-9]{10}%', raw_field), 14) AS doc_code
  FROM your_table
)
SELECT 
  LEFT(doc_code, PATINDEX('%[0-9]%', doc_code) - 1) 
  + CAST(CAST(SUBSTRING(doc_code, PATINDEX('%[0-9]%', doc_code), 10) AS BIGINT) AS VARCHAR(10)) 
  AS processed_doc_code
FROM extract_code

Azure Database for MySQL

SELECT 
  CONCAT(
    REGEXP_SUBSTR(doc_code, '^[A-Za-z]+'),
    CAST(REGEXP_SUBSTR(doc_code, '[0-9]{10}$') AS UNSIGNED)
  ) AS processed_doc_code
FROM your_table

Azure Database for PostgreSQL

SELECT 
  CONCAT(
    SUBSTRING(doc_code FROM '^[A-Za-z]+'),
    SUBSTRING(doc_code FROM '[0-9]{10}$')::BIGINT::TEXT
  ) AS processed_doc_code
FROM your_table

注意事项

  • 如果字母前缀长度不固定,代码无需调整,正则/PATINDEX会自动匹配第一个数字的分界位置
  • 若需要在报表中频繁使用处理后的值,建议新增持久化计算列存储结果,避免每次查询重复计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:06:07