2

我想替换 WHERE 语句中第一个字符为 S 的字符,

现在我只有以下内容:

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

但这会将所有 S 替换为 U。我只想在 S 是第一个字符时用 U 替换 S

谢谢你!

4

3 回答 3

4
WHERE i1.CODE = REPLACE(LEFT(i2.CODE,1), 'S', 'U') + RIGHT(i2.CODE, LEN(i2.CODE)-1)
于 2011-06-22T18:47:20.420 回答
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)用任意大的静态值替换 , 可能会稍微提高速度。

于 2011-06-22T18:47:01.340 回答
1

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

REPLACE(LEFT(i2.CODE, 1), 'S', 'U') + RIGHT(i2.CODE, LEN(i2.CODE)-1)
于 2011-06-22T18:51:58.313 回答