使用SQL Server 2008,我想在文本中添加一个变量(@wfID
),如下所示:
DECLARE @wfID uniqueidentifier
SET @wfID = NEWID()
'<META http-equiv="Content-Type" content="text/html; " /> <br><input type="button"
value="" onclick="window.open("http://localhost/TestWeb2/Test_Look.aspx?Test_ID='
+ convert(nvarchar, @wfID)
+ '");" /></br>',
所以,我想将@wfID
添加到文本中,但它总是说
数据类型nvarchar和text在add运算符中不兼容。
我尝试将所有内容转换为nvarchar,但后来我得到了这个:
将表达式转换为数据类型nvarchar的算术溢出错误。
有什么建议吗?
答案 0 :(得分:24)
在您对转换的调用中,您尝试转换为 nvarchar ,这隐含地意味着 nvarchar(1),即没有空间整个指导要转换。
将其更改为
convert(nvarchar(36), @wfID)
它会起作用。
由于某些奇怪的原因,MSSQL在执行SELECT CONVERT(nvarchar,NEWID())
时会产生算术溢出,但在执行SELECT CONVERT(varchar,NEWID())
时会给出正确的“不足的结果空间”。
答案 1 :(得分:1)
这很好用&#39;
--EXECUTE usp_TEST
CREATE PROCEDURE [dbo].[usp_TEST](
@UserID nvarchar(max) ='82F1A3A6-4DC6-481F-9046-856270E66468'
)
AS
BEGIN
declare @sqlwhere1 nvarchar(max)=''
SELECT @sqlwhere1= 'SELECT *
FROM [yourtablename] WITH(NOLOCK) WHERE '
IF(@UserID <> '')
BEGIN
SELECT @sqlwhere1=@sqlwhere1 +' convert(nvarchar(max),UserId)= '''+convert(nvarchar(max),@UserID)+''''
END
EXECUTE (@sqlwhere1)
END