Student
SID   SName      RXRQ
 1       a      20050901我在创建 该表关于INSERT的触发器中使用了 WHERE RXRQ= LIKE @ND%
可是不行,该如何做?RXRQ是入学日期的意思,@ND是入学年度。 
都是varchar型的

解决方案 »

  1.   

    WHERE RXRQ= LIKE @ND%   --- 这是什么意思,笔误么?模糊查询不是这样写的阿。WHERE RXRQ LIKE @ND+'%' 或者是    WHERE CHARINDEX(@ND, RXRQ)>0
      

  2.   

    ------例子---------
    create table Student(SID int,SName varchar(10),RXRQ varchar(10))
    insert  Student
    select 1,'a','2005090'declare @str varchar(10)
    set @str='2005'select * from Student where RXRQ like @str+'%'
    select * from Student where charindex(@str,RXRQ)>0
      

  3.   

    用: 字段 like '%...'
    看来楼主还得加紧学习基本功
      

  4.   

    if exists(select 1 from Student where RXRQ like @ND + '%')

    if exists(select 1 from Student where left(RXRQ,4) = @ND)
      

  5.   

    WHERE RXRQ= LIKE @ND% 
    改正
    WHERE RXRQ LIKE @ND+'%' 
      

  6.   

    谢谢了,数据库是我这几天才开始频繁接触的。以前只是学过但不景
    好人做到底,帮我看看这个出发器吧CREATE TRIGGER Course_insert
    ON Course 
    AFTER INSERT 
    AS
    DECLARE @CND varchar(4)
    DECLARE @CZID varchar(5)
    DECLARE @CXXXS varchar(10)
    DECLARE @CCID varchar(5)
    SELECT @CND=ND, @CZID=ZID, @CXXXS=XXXS, @CCID=CID FROM INSERTED Course
    INSERT INTO Score(CID,XH)  SELECT @CCID,StuZyB.XH FROM Student, StuZyB, StuXxxsB
    WHERE (Student.RXRQ  LIKE  @CND+'%' ) AND (StuXxxsB.XXXS = @CXXXS) AND (StuZyB.ZID = @CZID)我要求是在Course表中插入了@ND(入学年度)、@ZID(专业号)、@XXXS(学习形式)、@CID(课程号)之后,通过@ND(入学年度)与Student表中的RXRQ(入学日期)、@ZID(专业号)与StuZyB中的ZID、@XXXS(学习形式)与StuXxxsB表中的XXXS得出对应的唯一班级,然后得出对应的所有XH(学号),再把XH和CID插入Score表中;可是在插入值的时候,Score弹出错误说不能插入重复值,我想应该是把同一个学号多次插入进去了,该如何更改触发器呢
      

  7.   

    CREATE TRIGGER Course_insert ON Course 
    FOR INSERT 
    AS
    DECLARE @CND varchar(4)
    DECLARE @CZID varchar(5)
    DECLARE @CXXXS varchar(10)
    DECLARE @CCID varchar(5)
    INSERT INTO Score(CID,XH) 
     SELECT T.CID,StuZyB.XH FROM Student, StuZyB, StuXxxsB,INSERTED T
    WHERE (Student.RXRQ  LIKE  T.ND+'%' ) AND (StuXxxsB.XXXS = T.XXXS) AND (StuZyB.ZID = T.ZID)---不知道是不是这个意思?
      

  8.   

    Student
      XH        XM     RXRQ      
    601226      a    20040601
    601227      b    20040601
     
    StuZyB
     XH         ZID
    601226       11
    601227       11StuXxxsB
      XH       XXXS
    601226      夜大
    601227      夜大Course
    ND       ZID    XXXS   CID   CName
    2004      11     夜大  1111    网络Score
    CID    XH    CJ我在Course插入 (2004,11,夜大,1111,网络)的时候,
    要求能在Score中插入对应的(1111,601226)  (1111,601227)
      

  9.   

    你的语句有两个错误
    SELECT @CND=ND, @CZID=ZID, @CXXXS=XXXS, @CCID=CID FROM INSERTED Course  --- 这个地方得到的是最后一条纪录的值(如果同时插入多条纪录的时候,所以造成下面的语句再插入的时候,当StuZyB.XH相同的时候会提示你“不能插入重复值”)
    INSERT INTO Score(CID,XH)  SELECT @CCID,StuZyB.XH FROM Student, StuZyB, StuXxxsB
    WHERE (Student.RXRQ  LIKE  @CND+'%' ) AND (StuXxxsB.XXXS = @CXXXS) AND (StuZyB.ZID = @CZID)
      

  10.   

    回leo_lesley(leo) ( ) 
    还是弹出同样的错误,说是不能在Score中插入重复键
    在Score中我设了(CID,XH)为主键的