我的 SQL Server 数据库输入值遵循第一个位置是一个字符,然后是数字的模式。我想用另一个或多个字符替换第一个字符。例如:
Q234567888
R264747848
B264712481
I234567888
I264747848
U264712481
第一个位置的潜在值为[A-Z]
。
我正在寻找一个不使用多个REPLACE
语句且不使用CASE
.
如果我使用CASE
,我将不得不检查 26 个案例,或者如果我REPLACE
以嵌套方式使用,我最终可能会使用 26 个REPLACE
语句。我正在努力避免这些。
请提出任何更好的方法来实现结果。
在表值构造函数中创建旧值和新值之间的映射,并使用stuff替换字符。
declare @T table(Value varchar(10));
insert into @T values
('Q234567888'),
('R264747848'),
('B264712481');
select stuff(T.Value, 1, 1, (
select V.NewValue
from (values('Q', 'I'),
('R', 'I'),
('B', 'U')) as V(OldValue, NewValue)
where V.OldValue = left(T.Value, 1)
))
from @T as T;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3323 次 |
最近记录: |