修改数据,如果它包含SQLSERVER中的连字符

时间:2016-09-08 10:09:57

标签: sql-server sql-server-2008 tsql

我不知道如何开始在我的问题上搜索答案。找不到合适的词。如果你能指出我正确的方向,那就太好了。

基本上,我的问题是。 我有一个源值示例是929-123-12-1111, 但它也包含值123 ---,如果值为123 ---我想要做的是更新/更改为123-000-00-0000。

这可以在select语句中执行吗?

从表

中选择numcode

1 个答案:

答案 0 :(得分:1)

你可以删除所有连字符,用0填充它并重新组合结果,如SUBSTRING(1, 3) + '-' + SUBSTRING(4, 3) + '-' ...

WITH T1 AS
(
    SELECT *, REPLACE(Id, '-', '') AS IdNoHyphen
    FROM (VALUES ('929-123-12-1111'), ('123---'), ('123-456--')) AS T(Id)
),
T2 AS
(
    SELECT *, LEFT(IdNoHyphen + '00000000000', 12) AS Padded
    FROM T1
)
SELECT SUBSTRING(Padded, 1, 3) + '-' 
    +  SUBSTRING(Padded, 4, 3) + '-' 
    + SUBSTRING(Padded, 7, 2) + '-' 
    + SUBSTRING(Padded, 9, 4)
FROM T2