2016-08-12 11 views
9

「またはcccまたはbbbまたはaaa」のようなものを持つ@tempテーブルからデータをフェッチする必要があります。最初のオカレンスをスペースに置き換えて、 cccまたはbbbまたはaaa」と表示されます。私はものをしようと置き換えるが、彼らは私が試してみました何望ましい結果SQLの文字列中の最初の文字列を置換する

得るように見えることはありませんしています:あなたはあなたが望むものを達成するためにSTUFFCHARINDEXの組み合わせを使用することができます

DECLARE @stringhere as varchar(500) 

DECLARE @stringtofind as varchar(500) 

set @stringhere='OR contains or cccc or ' 

set @stringtofind='or' 
select STUFF('OR contains or cccc or ',PATINDEX('or', 'OR contains or cccc or '),0 ,' ') 
+0

あなたは、動的クエリのWHERE句をしようとしていますか? –

+0

私は文字列の最初の出現を取り除いた後に最終値を得ようとしています。 – Shobhit92

+0

緊急募集については[こちらのディスカッションを読む](http://meta.stackoverflow.com/q/326569/472495)これはボランティアに対処する適切な方法ではないことを伝えました。ありがとう! – halfer

答えて

8

を:

SELECT STUFF(col, CHARINDEX('substring', col), LEN('substring'), 'replacement') 
FROM #temp 

CHARINDEX('substring', col)列内'substring'発生の指標を返します。 STUFFは、このオカレンスを'replacement'に置き換えます。

+0

ありがとうございました、本当にありがとうございました。 ...ありがとうございました – Shobhit92

+0

あなたを助けてくれてうれしい...そしてあなたはかなり良い質問をしました:-) –

+0

少し遅いですが(これは以前には驚いていましたが)、これはオカレンスがある場合にのみ有効です「部分文字列」の。存在しない場合、 'null'が返されます。したがって、それをキャッチする 'CASE'式がお勧めです。 – HoneyBadger

1

あなたが2 %は、先行すると、ターゲット文字列

に末尾の欠場思わ試してください。

select STUFF(@stringhere, PATINDEX('%' + @stringtofind + '%', @stringhere), LEN(@stringtofind), ' ') 
+0

@ user3331798: – Grace

+0

これも完璧に機能してくれてありがとうありがとうございました... – Shobhit92

+0

@ user3331798:ありがとうございます。なぜ、 '' '' ORには2つの単一引用符が含まれていますか? – Grace