比如说我要让存储过程生成流水号,肯定要用到一些转换和截取字符串的函数,比如说:RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)等等,但是为什么我用把它赋值给一个变量:比如说 Select @aaa=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2) 之后,aaa里没有被赋值呢?但是如果这样写:Select @aaa='123' 就没有问题。但是@aaa=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)的赋值方法又提示错误,请问各位战友,这个问题应该如何解决呢?谢谢大家。我用的是SQL Server2000

解决方案 »

  1.   

    set @aaa=RIGHT(CONVERT(VARCHAR(4),GETDATE(),120),2)
      

  2.   

    DECLARE @AAA VARCHAR(10)
    SELECT  @AAA=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)
    SELECT @AAA
      

  3.   

    declare @aaa varchar(10)set  @aaa=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)
    Select @aaa
      

  4.   

    declare @aaa varchar(10)select   @aaa= a from (select RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2) a) t
    Select @aaa/*
               
    ---------- 
    10(所影响的行数为 1 行)*/
      

  5.   


    不可能你看declare @aaa varchar(20)
    select @aaa=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)
    print @aaa---结果
    10
      

  6.   

    看不明白,这个流水号的全部表达式是这样的:
    SELECT @ListNum='ZYKH'+RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE())),0)+REPLICATE('0',2-LEN(DAY(GETDATE())))+CONVERT(VARCHAR(2),DAY(GETDATE())),0)+'01'
    但为什么总是提示错误呢?盼求各位前辈解决。
      

  7.   


    declare @ListNum nvarchar(4000)
    select @ListNum='ZYKH'+RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+
    REPLICATE('0',2-LEN(MONTH(GETDATE())))+
    CONVERT(VARCHAR(2),MONTH(GETDATE()))+
    REPLICATE('0',2-LEN(DAY(GETDATE())))+
    CONVERT(VARCHAR(2),DAY(GETDATE()))+'01'
    select @ListNum
      

  8.   

    SELECT 'ZYKH'+
    RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+
    REPLICATE('0',2-LEN(MONTH(GETDATE())))+
    CONVERT(VARCHAR(2),MONTH(GETDATE())),0)+
    REPLICATE('0',2-LEN(DAY(GETDATE())))+
    CONVERT(VARCHAR(2),DAY(GETDATE())),0)+'01'/*服务器: 消息 170,级别 15,状态 1,行 4
    第 4 行: ')' 附近有语法错误。
      

  9.   

    回楼上的大大,已经修改,没有错误了,但是@aaa的值仍然没有……
      

  10.   

    不用了,看出来就是下面这个吧
    declare @ListNum varchar(20)
    set @ListNum='ZYKH'+ convert(varchar(8),getdate(),112) +'01'print @ListNum-----结果
    ZYKH2010061401