2009-09-23 14 views
5

フィールドに「Blah-OVER」、「Blah-OveR」などの文字列が含まれています。私はちょうどそれらすべてが、すべてのケースを網羅しようとせずに「Blah-」(左何のケースを維持する)と言ってもらうにはどうすればよいSQL Server 2000の大文字と小文字を区別しないREPLACE()

SELECT field as "before", REPLACE(field, 'OVER', '') as "after" 

:これは最初のケース(いわば)とない人をキャッチ他の入れ子になったREPLACE関数との組み合わせ?

+0

ありがとう、Remus、私は正しいタグを探していたが、そのコンボを試していなかった。 – Kev

答えて

8

大文字小文字を区別しない照合を使用する:あなたはあなたのデータのための1つのappropiateを選ぶよう

SELECT field as "before", REPLACE(field COLLATE SQL_Latin1_General_Cp1_CI_AI 
, 'OVER', '') as "after" 

は、照合名のリストについてはCOLLATEを参照してください。

オクラホマので、私はあなたの実際の要求逃し

更新(入力の変更のケースを、大文字と小文字を区別しない見つけることができません)。適切な解決策は...入力を変更するのではなく、データの適切な照合を使用することです。データを特定の形式で表示する必要がある場合は、クライアントの表示オプションを使用します(例: CSS text-transform:uppercase、サーバーではありません。

インプレースでこの変換を行うためのビルトインSQL関数はありませんが、RegExを使用するCLR functionを作成するのは簡単です。 (SQL 2005では、SQL 2000ではなく... doh、私はもっとcoffeが必要です)。

+0

この構文は私にとって初めてのことです!ありがとう! – Kev

0

私はSQL Serverに精通していませんが、正規表現を使用することができます。これらは通常、大文字と小文字を区別しないモードを提供します(iフラグを介して設定されます)。

そうでなければ、置換呼び出し前に大文字にすることができます。

SELECT field as "before", REPLACE(UPPER(field), 'OVER', '') as "after" 
+0

「BLAH-」を生成します。したがって、 'OVER'を置き換えるだけでなく、入力文字列を変更します。 –

+0

2000年にregexesを使うためにカスタムDLLがインストールされている必要があると私は思っていましたが、大文字になってしまいました。 – Kev

関連する問題