SQL Server中的消息207,级别16,状态1,行2

时间:2015-03-30 15:37:54

标签: sql-server view

我创建了以下内容,可以使用where子句子句执行查询,但是当我使用以下查询时:

select * 
from teacherSub 
where teacher = "te123";

它会产生错误:

  

Msg 207,Level 16,State 1,Line 2

完整代码:

USE [SchoolRecord]
GO

/****** Object:  View [dbo].[teacherSub]    Script Date: 3/30/2015 8:32:56 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER VIEW [dbo].[teacherSub]
AS
  SELECT sbt.teacherID   AS teacher,
         sub.Name        AS SubjectName,
         sub.GroupID     AS groupName,
         sub.Description AS subdescription
  FROM   Subjects sub,
         SubjectTeacher sbt,
         teacherInfo te
  WHERE  sbt.teacherID = te.TeacherID
         AND sbt.SubjectID = sub.subjectID; 

如何在上述视图中应用where条款?

3 个答案:

答案 0 :(得分:1)

使用Single quotes代替double quotesDouble quotes用于分隔identifiers

select * from teacherSub where teacher='te123'

答案 1 :(得分:1)

正如fireblade所解释的那样,你需要使用单引号用于文字字符串

此外,您还需要使用JOIN子句来连接表(良好实践)。

查看定义

ALTER VIEW [dbo].[teacherSub]
AS
  SELECT sbt.teacherID   AS teacher,
         sub.Name        AS SubjectName,
         sub.GroupID     AS groupName,
         sub.Description AS subdescription
  FROM   Subjects sub
  INNER JOIN  SubjectTeacher sbt ON sbt.SubjectID = sub.subjectID
  INNER JOIN  teacherInfo te     ON sbt.teacherID = te.TeacherID;

<强>查询

select * from teacherSub where teacher= 'te123';

答案 2 :(得分:0)

查询中的两项改进

  1. 不允许双引号

  2. 使用'like'关键字

  3. 而不是=

    select * from teacherSub where teacher LIKE 'te123'

相关问题