数据库问题
当我用下面的语句
UPDATE xxx表 SET FlagID = CONVERT(varchar,CONVERT(bigint,FlagID)-1) WHERE FlagID like '20060411%' and FlagID>CONVERT(bigint,'200604113')--'200604113'我的FlagID字段是varchar类型,值是年月日+数字.
问题是当我删除200604113的记录,可2006041110到2006041119记录并没有减1(也就是说数字为1位的能减1
,数字为2位数及以后的就没减1)
在不改字段数据类型的情况下,怎么解决?
谁能帮帮忙?

解决方案 »

  1.   

    UPDATE xxx表 SET FlagID = left(FlagID,6) + convert(varchar,convert(numeric,substring(FlagID,7,len(FlagID)-6)) - 1)  where  FlagID like '20060411%' and FlagID > '200604113'
      

  2.   

    zhangqu_980371(能坚持一辈子的东西太少) ( ) 信誉:96 UPDATE xxx表 SET FlagID = left(FlagID,8) + convert(varchar,convert(numeric,substring(FlagID,9,len(FlagID)-8)) - 1)  where  FlagID like '20060411%' and FlagID > '2006041111'可2006041110到2006041119记录还是没有减1,我把where  FlagID like '20060411%' and FlagID > '2006041111'那些小于10也在减1。
      

  3.   

    1、改成 CONVERT(bigint, FlagID) > CONVERT(bigint,'200604113')
    2、FlagID like '20060411%' and FlagID > '2006041111'
     ---比如 '200604113' 符合,所以小于10也在减
    3、FlagID like '20060411%' and FlagID > '200604113'
    ---'2006041110' < '200604113', 所以不减