与Alias Visual Basic和&amp ;; SQL

时间:2012-07-14 09:59:19

标签: sql database vb.net

我继承了一个MS数据库,从中工作,这个数据库也链接到其他程序,所以我不想更改数据库表本身。 我正在使用Visual Basic 2010, 我需要做的是在此表上有一系列过滤器,然后由用户输入一个额外的过滤器。

e.g。他们输入'50'和范围'5'我需要使用'45到55'的范围搜索数据集  到目前为止,这是我的数据集代码:

SELECT [CUTTER NO]
       ,CUTTER_ID
       ,[SIZE-Inches] 
       ,[MM-Across]
       ,[MM-Round]
       ,TYPE 
       ,[LEADING EDGE] 
       ,[CUTTER TYPE]
       ,ACROSS
       ,ROUND
       ,[WIDTH PAPERmm]
       ,[GAPS ACROSSmm]
       ,[GAPS ROUNDmm] 
       ,[Serial Number]
       ,[T G]
       ,Repeat
       ,[Repeat MM] 
       ,[L&G]
       ,Notes
FROM [Cutter List]
WHERE (TYPE <> 'DISCONTINUED') 
  AND (TYPE <> 'SPEC') 
  AND (CUTTER_ID <> NULL) 
  AND ([CUTTER TYPE] = 'MP') 
  AND (TYPE <> 'BUTT')
ORDER BY CUTTER_ID, [MM-Across]

我需要输入此SQL的是:

WHERE [MM-Across] LIKE @[MM-Across] and [MM-Round] LIKE @[MM-Round]

我从网上看到的内容是错误的,因为我不能在[。]中使用[]。

我甚至尝试过:

SELECT        [MM-Across] AS mmacross
FROM            [Cutter List]
WHERE        ('mmacross' LIKE '@mmacross')

这是接受但我得到一个不同的错误出现

  

“新查询返回的架构与基本查询不同。”

我做错了什么?我不明白最后一个错误或如何避免这种情况。

1 个答案:

答案 0 :(得分:0)

两件事:

  1. 你肯定在WHERE子句中有括号“[..]”,它们只需要在正确的位置(就像其他地方一样),并且

  2. 您无法使用 变量 参数 引用中的括号,这意味着,与列不同,您的名称中不能包含特殊字符,例如“@ MM-Across”中的“ - ”,因此只需将参数名称更改为“@MM_Across”。

  3. 请注意名称没问题,您必须更改参数和/或变量名称(我无法分辨哪个名称)这些来自你的片段。)

    所以不要这样:

    WHERE [MM-Across] LIKE @[MM-Across] and [MM-Round] LIKE @[MM-Round]
    

    试试这个:

    WHERE [MM-Across] LIKE @MM_Across and [MM-Round] LIKE @MM_Round
    

    当然,您还必须在声明和传入的任何位置更改参数/变量名称。如果您发布执行此操作的代码,我也可以向您展示如何更改它(通过它可能是显而易见的现在)。