选择具有别名的列时出现SQL异常

时间:2013-02-28 17:10:05

标签: c# alias sqlexception

我的SQL查询是

cmd = new OleDbCommand("select vchr_No as voucher No, vchr_Date as Date, 
                        vchr_Acnthd as Debit, vchr_Prtynm as Paid to 
                        from cshvchrs  
                        where vchr_No like '%" + vchno + "%' ", con);

当我尝试检索数据时,我得到一个例外:

  

SELECT语句包含拼写错误或缺失的保留字或参数名称,或标点符号不正确。

请有人帮助我

4 个答案:

答案 0 :(得分:5)

您的SQL无效 - 包含空格的别名需要转义,关键字别名也是如此。

cmd = new OleDbCommand("select vchr_No as [voucher No] ,vchr_Date as [Date] ,vchr_Acnthd as Debit ,vchr_Prtynm as Paid to from cshvchrs  where vchr_No like '%" + vchno + "%' ", con);

答案 1 :(得分:2)

您使用Date作为别名(vchr_Date as Date)。 Date是保留关键字,请尝试:

vchr_Date as [Date]

或将Date更改为其他别名。

您还需要在空格的别名周围使用[]

答案 2 :(得分:2)

vchr_Date as Date部分,

Date是Transact-SQL上的reserved keyword

  

保留关键字是Transact-SQL语言语法的一部分   SQL Server用于解析和理解Transact-SQL   陈述和批次。

您可以将它与方括号[]一样使用;

vchr_Date as [Date]

将完整查询用作;

cmd = new OleDbCommand("select vchr_No as [voucher No] ,vchr_Date as [Date] ,vchr_Acnthd as Debit ,vchr_Prtynm as Paid to from cshvchrs  where vchr_No like '%" + vchno + "%' ", con);

答案 3 :(得分:1)

您错误地指定了列名称。例如,片段:

vchr_No as voucher No

应表示为

vchr_No as [voucher No]

或者你没有有效的SQL。

通常,您需要在[和]列周围放置包含空格,标点符号,关键字或SQL列标识符中不允许的任何其他字符的列名。