2011-09-02 150 views
2

请帮忙,我有一列(range varchar(11)),其值为'422000''357860'查找字符串的第一个字符的位置

我需要一个查询可以在第一个字符位置(即图4和3)更改为5

以致变得分别'522000''557860'

我想:

select replace (SUBSTRING(range,1,1), 1,5)) 

但这不是正确的查询。

我将不胜感激您的贡献。由于

回答

3

使用STUFF function代替:

DECLARE 
    @range varchar(11); 
SET @range = '422000'; 

SELECT @range, STUFF(@range, 1, 1, '5'); 
+0

谢谢,这对我有用。 – Matthew

1
SELECT [Range], 
     '5' + SUBSTRING([RANGE],2,25) [ModifiedRange] 
FROM (SELECT '422000' [Range] 
     UNION 
     SELECT '357860') A 
+0

在我的回答中意识到了一个缺陷,它用'5'代替了第一个数字的所有出现,而不仅仅是第一个。 – JNK

1

此选项将替换第一个字母不管的长度范围

Select range, '5' + SUBSTRING(range, 2, LEN(range)) as fixedrange 

相关的更新语句(这将改变您的表中的数据)将是:

Update tbl_name SET range = '5' + SUBSTRING(range, 2, LEN(range)) 
+0

感谢您的协助 – Matthew

相关问题