我在其中一个sql语句中遇到语法错误,这就像下面的语句(示例)
Declare @SQL nvarchar(max)
set @SQL =' select Case When isnull(M_loc.BeginAge, '')='' and isnull(M_loc.EndAge, '')=''
then ''
else Convert(nvarchar(5),M_loc.BeginAge)+' To '+Convert(nvarchar(5),M_loc.EndAge)
End AS [Age_Limit]'
sp_executesql (@SQL)
我收到以下错误:
第15行,第1行,第6行 关键字“收件人”附近的语法不正确。
答案 0 :(得分:1)
试试这个,你遗失了" +" s和"'" s:
DECLARE @SQL NVARCHAR(MAX) = N'
SELECT
CASE WHEN ISNULL(10, '''') = '''' AND ISNULL('''', '''') = '''' THEN ''''
ELSE CONVERT(NVARCHAR(5), 10) + ' + ''' To ''' + ' + CONVERT(NVARCHAR(5), 20)
END;';
SELECT @SQL;
EXEC(@SQL);
答案 1 :(得分:0)
如果您使用的是sql server 2012或更高版本,请尝试使用以下代码:
Case When isnull(M_loc.BeginAge, -1)=-1 and isnull(M_loc.EndAge, -1)=-1
then ''
else CONCAT(M_loc.BeginAge,' To ',M_loc.EndAge) End AS [Age_Limit]
答案 2 :(得分:0)
也可能在此我们可以做到
DECLARE @SQL NVARCHAR(MAX) = N'
SELECT
CASE WHEN ISNULL(10, '''') = '''' AND ISNULL('''', '''') = '''' THEN ''''
ELSE CONVERT(NVARCHAR(5), 10) + ' + ''' To ''' + ' + CONVERT(NVARCHAR(5), 20)
END;';
SELECT @SQL;
EXEC(@SQL);