Sql server 为什么替换在我的SQL查询中不起作用?

Sql server 为什么替换在我的SQL查询中不起作用?,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我正在创建一个存储过程。当前查询存储在变量中。例如: @sample = 'SELECT * FROM WS_CoolApp_ASample' @sample += 'Where DATASOURCE.FName = @finder AND DATASOURCE.Age = 23' 如果条件为true,我想从查询中删除该“数据源”。到目前为止,我已经尝试: IF (true) REPLACE(@sample, "DATASOURCE.", "") 为什么不工作?您没有将REPLACE

我正在创建一个存储过程。当前查询存储在变量中。例如:

@sample = 'SELECT * FROM WS_CoolApp_ASample'
@sample += 'Where DATASOURCE.FName = @finder AND DATASOURCE.Age = 23'
如果条件为true,我想从查询中删除该“数据源”。到目前为止,我已经尝试:

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

为什么不工作?

您没有将REPLACE的输出分配给任何对象

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

您没有将REPLACE的输出分配给任何对象

@sample = REPLACE(@sample, 'DATASOURCE.', '')
我希望这能奏效

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.','')

我希望这能起作用。

这是哪个数据库引擎,是SQL Server吗?请明确。此外,SQL字符串在表名后需要一个额外的空格字符,或者在where子句中运行。@DavidG它确实有tsql标记。是的,它是SQL Server这是哪个数据库引擎,是SQL Server?请明确。此外,SQL字符串需要在表名后添加一个空格字符,否则它会运行到where子句中。@DavidG它确实有tsql标记。是的,它是SQL Server OK,实际上你是对的。我有一个if语句,下面有一个else语句,我在if语句中把它改成了这个,但在else语句中忘记了这样做。现在开始工作了!好吧,事实上你是对的。我有一个if语句,下面有一个else语句,我在if语句中把它改成了这个,但在else语句中忘记了这样做。现在开始工作了!你错过了表格之间的空格,条件检查呢?你错过了表格之间的空格,条件检查呢?
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.','')