2

WHEREステートメント内でSの最初の文字を持つ文字を置き換えたいのですが、

今私が持っているのは次のとおりです。

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

しかし、これはすべてのSをUに置き換えます。Sが最初の文字である場合にのみSをUに置き換えたいだけです

ありがとう!

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 に答える