在这个例子中由sql删除字符串中的Dash的最佳功能?

Red*_*rmy 1 sql t-sql sql-server

我想在这个例子中创建感兴趣的删除仪表板(3-,2-)的功能:

柱:

1GBDDR3-1066-21
2GBDDR3-1066-21
3- 4GBDDR3-1066-414
1GBDDR3-1066-21
2-1GBDDR3-1066-21
Run Code Online (Sandbox Code Playgroud)

输出:

1GBDDR3-1066-21
2GBDDR3-1066-21
4GBDDR3-1066-414
1GBDDR3-1066-21
1GBDDR3-1066-21
Run Code Online (Sandbox Code Playgroud)

Zoh*_*led 8

您可以使用PATINDEXRIGHT,LENLTRIM:

创建并填充样本表(在将来的问题中保存此步骤)

DECLARE @T AS TABLE
(
    col varchar(30)
)

INSERT INTO @T VALUES
('1GBDDR3-1066-21'),
('2GBDDR3-1066-21'),
('3- 4GBDDR3-1066-414'),
('1GBDDR3-1066-21'),
('2-1GBDDR3-1066-21')
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT CASE WHEN PATINDEX('[0-9]-%', col) > 0 THEN
           LTRIM(RIGHT(col, LEN(col)-2))
       ELSE
          col
       END
FROM @T
Run Code Online (Sandbox Code Playgroud)

结果:

1GBDDR3-1066-21
2GBDDR3-1066-21
4GBDDR3-1066-414
1GBDDR3-1066-21
1GBDDR3-1066-21
Run Code Online (Sandbox Code Playgroud)