2016-09-06 8 views
0

私はストアドプロシージャを作成しています。現在、クエリは変数に格納されています。例:SQL照会でREPLACEが機能しないのはなぜですか?

@sample = 'SELECT * FROM WS_CoolApp_ASample' 
@sample += 'Where DATASOURCE.FName = @finder AND DATASOURCE.Age = 23' 

「DATASOURCE」を削除します。条件が真であればクエリからこれまで私は試しました:

IF (true) 
    REPLACE(@sample, "DATASOURCE.", "") 

なぜこれは機能しませんか?

+0

このデータベースエンジンは、SQL Serverですか?明示してください。 – DavidG

+2

また、SQL文字列には、テーブル名の後ろにスペース文字を追加するか、またはwhere句を実行する必要があります。 – DavidG

+0

@DavidG 'tsql'タグがありました。 – shawnt00

答えて

3

REPLACE()の出力には何も割り当てられていません。私はこの作品を願ってい

@sample = REPLACE(@sample, 'DATASOURCE.', '') 
+0

ですが、まだ試してみましたが、まだ動作していません。 – AleAng

+0

本当にあなたは正しいと思います。私はその下にelse文を持つif文を持っていましたが、if文でこれを変更しましたが、else文でそれをするのを忘れました。それは今働いている! – AleAng

0
<!-- language: lang-sql --> 
DECLARE @sample as nvarchar(500) 

set @sample = 'SELECT * FROM WS_CoolApp_ASample'; 
set @sample += 'Where DATASOURCE.FName = @finder AND DATASOURCE.Age = 23'; 

-- assign the replaced string back to @sample 
set @sample = REPLACE(@sample, 'DATASOURCE.', '') 

PRINT @sample 

-- prints -> SELECT * FROM WS_CoolApp_ASampleWhere FName = @finder AND Age = 23 
+0

私はそれを試してもまだ動作していません – AleAng

0
DECLARE @sample nvarchar(max) 
SET @sample = 'SELECT * FROM WS_CoolApp_ASample' 
SET @sample += 'Where DATASOURCE.FName = @finder AND DATASOURCE.Age = 23' 

SELECT REPLACE(@sample,'DATASOURCE.','') 

+0

あなたはテーブルとの間のスペースを逃しました また、条件付きチェックはどうですか? – Marinus

0
DECLARE @sample nvarchar(max) 
SET @sample = 'SELECT * FROM WS_CoolApp_ASample ' 
SET @sample += 'Where DATASOURCE.FName = @finder AND DATASOURCE.Age = 23' 
if(@bit_var = 1) 
    SET @sample = REPLACE(@sample,'DATASOURCE.','') 
関連する問題