执行sql时出现语法错误

时间:2014-07-30 13:24:03

标签: sql sql-server sql-server-2008

我在其中一个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行   关键字“收件人”附近的语法不正确。

3 个答案:

答案 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);