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

如何为SQL表nvarchar类型编码补全小数点实现两表关联匹配

nvarchar类型诊断编码补全小数点匹配方案

注意:请勿使用decimal(10,2)处理该字段,由于字段值包含英文字母,强转数值类型会直接触发转换失败报错。

两种实现路径可按需选择:

方案1:关联时动态匹配(推荐,不修改原始导入数据)

无需提前修改表2存储的原始导入值,直接在关联条件中移除表1编码的小数点做等值匹配即可,原始导入数据完整保留,方便后续排查导入异常。
基础关联查询示例:

SELECT 
  t1.diagnosis_codes,
  t2.codes
FROM 表1 t1
INNER JOIN 表2 t2 
  ON REPLACE(t1.diagnosis_codes, '.', '') = t2.codes;

如果需要在查询结果中直接输出表2编码带小数点的标准格式,可通过字符串截取拼接实现,逻辑为取编码前3位字符,拼接小数点后,拼接第4位开始的所有剩余字符:

SELECT 
  t1.diagnosis_codes,
  t2.codes AS original_import_code,
  CONCAT(LEFT(t2.codes, 3), '.', SUBSTRING(t2.codes, 4, LEN(t2.codes)-3)) AS standard_code
FROM 表1 t1
INNER JOIN 表2 t2 
  ON REPLACE(t1.diagnosis_codes, '.', '') = t2.codes;

用给出的示例值验证拼接逻辑:

  • 表2原始值N926:前3位为N92,第4位开始的剩余字符为6,拼接结果为N92.6,与表1对应编码完全一致
  • 表2原始值Z3201:前3位为Z32,第4位开始的剩余字符为01,拼接结果为Z32.01,与表1对应编码完全一致

方案2:持久化更新表2字段,永久补全小数点

如果需要将表2的codes字段永久修改为带小数点的标准格式,建议先通过查询验证拼接结果,确认无异常后再执行更新操作,避免误改数据。

-- 第一步:查询预览修改后的结果,确认所有编码转换符合预期
SELECT 
  codes AS original_code,
  CONCAT(LEFT(codes, 3), '.', SUBSTRING(codes, 4, LEN(codes)-3)) AS updated_code
FROM 表2;

-- 第二步:确认预览结果无误后,执行更新语句
UPDATE 表2
SET codes = CONCAT(LEFT(codes, 3), '.', SUBSTRING(codes, 4, LEN(codes)-3));

更新完成后,两表可直接通过编码字段做等值关联:

SELECT *
FROM 表1 t1
INNER JOIN 表2 t2 ON t1.diagnosis_codes = t2.codes;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:39:20