我正在寻找清理数据集中一列的帮助,以便可以联接到另一个表。
第一个数据集是我的完整数据,包括我们称之为">reference_numbers";其涉及特定情况。这是一个伪样本:
reference_number | 案例打开 | 案例关闭
---|---|
01353568-0000000 1 | 2021年1月11日 | 2022年2月3日
09736473-00000 9 | 2005年4月21日 | 2021年7月19日
05839576-000012 | 2014年9月13日 | 2017年12月19日
09364857-00000 6 | 2014年9月13日 | 2017年12月19日
如果规则非常具体,您可以尝试使用STRING_SPLIT
和STRING_AGG
:的组合
SELECT
t.reference_number,
STRING_AGG(RIGHT('00000000'+s.value,8),'-') new_reference_number
FROM dbo.SecondTable t
CROSS APPLY STRING_SPLIT(t.reference_number,'-') s
GROUP BY t.reference_number
;
使用您发布的样本数据,结果是:
╔════════════════════╦══════════════════════╗
║ reference_number ║ new_reference_number ║
╠════════════════════╬══════════════════════╣
║ 09364857-000000006 ║ 09364857-00000006 ║
║ 09736473-9 ║ 09736473-00000009 ║
║ 1353568-00000001 ║ 01353568-00000001 ║
║ 5839576-12 ║ 05839576-00000012 ║
╚════════════════════╩══════════════════════╝
select reference_number,
CONCAT(left(reference_number, charindex('-', reference_number) - 1),'-',RIGHT(CONCAT('000000000',right(reference_number, len(reference_number) - charindex('-', reference_number))),9)) as NewReferenceNumber
from YourSecondTableName
Reference_Number | New_Reference_Number |
---|---|
1353568-0000000 1 | 1353568-00000000 1 |
09736473-9 | 09736473-00000009 |
5839576-12 | 5839576-00000 12 |
09364857-00006 | 09364857000000006 |