第一个语句:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'table'.

解决方案 »

  1.   

    exec sp_executesql N'select top 1 P from [table] WHERE P like (''+ @partno + %'') ',N'@partno varchar(20)',@partno='cngothic'
    这样能执行不?
      

  2.   

    可以执行。语句1返回空,语句2返回多条数据。我是.NET运行时发现返回数据为空。SQL监控得出来的语句被我精简成语句1,但我想要的是语句2的效果。不明显示在哪?
      

  3.   

    可以执行。语句1返回空,语句2返回多条数据。我是.NET运行时发现返回数据为空。SQL监控得出来的语句被我精简成语句1,但我想要的是语句2的效果。不明显示在哪?试试改成这样:exec sp_executesql N'select top 1 P from table WHERE P like @partno + ''%'') ',N'@partno varchar(20)',@partno='cngothic'
      

  4.   

    就是改成这样,试试:exec sp_executesql N'select top 1 P from table WHERE P like @partno + ''%'') ',N'@partno varchar(20)',@partno='cngothic'
      

  5.   

    返回的是表?
    insert into 表 exec sp_executesql N'select top 1 P from table WHERE P like (''+ @partno + %'') ',N'@partno varchar(20)',@partno='cngothic'
    select * from 表
      

  6.   

    这个方法可以。
    我在网上查到了下面这种,本质是一样的。
    exec sp_executesql N'select top 1 PartNo from st where partno like (@partno)',N'@partno nvarchar(20)',@partno='cngothic%'
    这2个语句的执行步骤与开销都是一样的。总执行时间3000多毫秒。
    而语句2的执行计划与上面语句一样。但是总执行时间90多毫秒。
    语句2:
    select top 1 P from table WHERE P like ('cngothic%')不知道你是否做.NET程序。使用SqlParameter传递like参数(cngothic%)进去。监控SQL,发现执行的会是语句1。那么这个效率是相当慢的。
      

  7.   

    哦。我的错。varchar() 修改成了 nvrchar() 导致执行时间过慢。
    exec sp_executesql N'select top 1 PartNo from st where partno like (@partno)',N'@partno nvarchar(20)',@partno='cngothic%'谢谢各位