SQL替换功能

时间:2011-06-22 18:42:50

标签: sql pervasive

我想替换我的WHERE语句中具有S的第一个字符

的字符

现在我所拥有的是以下内容:

WHERE i1.CODE = REPLACE(i2.CODE, 'S', 'U')

但这会用U取代所有的S.我只想在S是第一个字符

时用U 替换S. 谢谢你!

3 个答案:

答案 0 :(得分:4)

WHERE i1.CODE = REPLACE(LEFT(i2.CODE,1), 'S', 'U') + RIGHT(i2.CODE, LEN(i2.CODE)-1)

答案 1 :(得分:2)

Where i1.Code = Case
                    When Substring( i2.Code, 1, 1) = 'S' 
                        Then 'U' + Substring( i2.Code, 2, Len( i2.Code ) )
                    Else i2.Code
                    End

另一种选择:

Where i1.Code = Case
                    When i2.Code Like 'S%'
                        Then 'U' + Substring( i2.Code, 2, Len( i2.Code ) )
                    Else i2.Code
                    End

正如ErikE建议的那样,你也可以用任意大的静态值替换Len(i2.Code),这可能会提高速度。

答案 2 :(得分:1)

免责声明:这真的非常难看,但我认为它有效。

REPLACE(LEFT(i2.CODE, 1), 'S', 'U') + RIGHT(i2.CODE, LEN(i2.CODE)-1)