Sql Server 2008 r2存储过程阿拉伯列名称未出现
我尝试使用这个sql代码Sql Server 2008 r2存储过程阿拉伯列名称未出现,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我尝试使用这个sql代码 declare @resultSet Nvarchar(4000) set @resultSet = 'SELECT byng.Quantity * itm.Price N''السعر'' FROM [Buying] byng inner join Item itm on byng.ItemId = itm.Id ' exec(@resultSet) 列名总是以UTF编码显示,看起来像“???”试试这样 declare @Co
declare @resultSet Nvarchar(4000)
set @resultSet = 'SELECT
byng.Quantity * itm.Price N''السعر''
FROM [Buying] byng
inner join Item itm on byng.ItemId = itm.Id
'
exec(@resultSet)
列名总是以UTF编码显示,看起来像“???”试试这样
declare @ColumnName Nvarchar(4000) = N'السعر'
declare @resultSet NVARCHAR(MAX)
SET @resultSet = N'SELECT byng.Quantity * itm.Price AS ' + @ColumnName
+ N' FROM [Buying] byng
inner join Item itm on byng.ItemId = itm.Id'
EXECUTE sp_executesql @resultSet
或者,您使用的方法也很好,但是您需要在Sql语句前面加上N
前缀,因为您连接的是unicode字符,而不是在Sql字符串前面加上N
,因此它不会被检测到
像这样的
DECLARE @resultSet NVARCHAR(MAX)
SET @resultSet = N'SELECT byng.Quantity * itm.Price AS ''السعر''
FROM [Buying] byng
inner join Item itm on byng.ItemId = itm.Id'
EXECUTE sp_executesql @resultSet
顺便说一句,与问题无关,这种查询不需要动态SQL,正常查询在符合条件时会更好。是的,我将尝试使用用例,而不是动态SQL。这不是一个问题,兄弟很乐意帮助:)