我认为这是一个非常奇怪的问题,但无论如何我都会尝试;这里的情景:
包含2列的表(id int,text nvarchar(max))
一个文本字段的值定义如下
'Value of the variable is ' + @var
然后我执行这部分代码
DECLARE @var INT = 100
,@text NVARCHAR(MAX)
SELECT @text = text FROM tbl WHERE id = 1
SELECT @text
这是我存储在表中的输出“'变量的值是'+ @var';我的问题如下,是否有任何方法可以重新解释/解析@text变量中的字符串,就像它一样:
SET @text = 'Value of the variable is ' + @var
SELECT @text
因此输出将是“变量的值为100”。
感谢您提供任何有用的建议,
F。
答案 0 :(得分:0)
您可以执行以下操作:
select replace(@text, '@var', @var)
我无法判断+
是否在字符串中。当我这样做时,字符串看起来像:
SET @text = 'Value of the variable is @var';
变量直接替换。
答案 1 :(得分:0)
您可以使用replace
方法替换字符串中的值:
declare @val int = 100
declare @str nvarchar(100) = '''Value of the variable is'' + @var'
-- output string as it is
select @str as output
-- replace the @var
select replace(@str,'@var',cast(@val as nvarchar(10))) as output
你可以通过删除引号和其他噪音来整理它
-- replace the variable
set @str = replace(@str,'@var',cast(@val as nvarchar(10)))
-- remove quotes
set @str = replace(@str,'''','')
-- remove +
select replace(@str,'+ ','') as output
你可以将这些组合成一个单独的调用,有一些丑陋的sql:
-- roll them in to a single replace
select replace(
replace(
replace(@str,'@var',cast(@val as nvarchar(10))),
'''',''),
'+ ','') as output
答案 2 :(得分:0)
您也可以使用动态代码:
DECLARE @text NVARCHAR(200)= '''Value of the variable is '' + @var';
DECLARE @var NVARCHAR(10) = 100
DECLARE @results NVARCHAR(300) = '';
--Prepare dynamic sql
DECLARE @sql NVARCHAR(MAX)= 'SELECT @results = ' + @text
EXEC sp_executesql @sql, N' @var NVARCHAR(10), @results VARCHAR(MAX) OUTPUT', @var=@var, @results=@results OUTPUT;
PRINT @results;