SQL-Server2000をデフォルトの照合順序でインストールすると
Japanese_CI_AS つまり大文字小文字区別なしアクセント区別ありと
なっていることと思います。
※Windows照合順序に左右されるのかな?
今回私が試している環境は上記の状態です。
この状態でReplace関数を使用すると、次のような結果になります。
Select Replace('DbCd','D', 'a')
↓
'abCa'
大文字小文字の区別なしに'D'と'd'が'a'に変換される
この関数上でのみ大文字小文字を区別させるには、使用する文字列自体に照合順序を指定します。
Select Replace('DbCd' collate Japanese_CS_AS,'D', 'a')
↓
'abCd'
大文字小文字を区別して'D'のみが'a'に変換される
ちなみに上記指定では変換元の文字列に対して指定していますが
検索文字、置換文字のいずれに指定しても同様の結果が得られるようです。
Select Replace('DbCd','D', 'a' collate Japanese_CS_AS)
↓
'abCd'
Select Replace('DbCd','D' collate Japanese_CS_AS, 'a')
↓
'abCd'
最初、ヘルプを読んだ際に指定方法がわからず、下記の指定をしてしまっていたのですが、これでは変換後の文字に対して指定しているのでまったく意味を為していなかったんですね。
Select Replace('DbCd','D', 'a') collate Japanese_CS_AS
↓
'abCa'
ということで、照合順序の指定方法、COLLATE句がどこにかかるのかを間違えないようにしましょう。