我有一个触发器,每次插入一条记录时,它会增加一个数字。
触发器适用于普通数字,但是我需要将数字设置为:Q1500/11/2017
(11表示月份,2017年是年份,它将根据月份和年份滚动。)
Q1500每次都会增加,因此从Q1500开始,它将进入Q1501 / 11/2017,Q1502 / 11/2017,并继续。
我试过这个:
SELECT
Quote_No = 'Q' + '/' + CONVERT(VARCHAR(255), CONVERT(INT, Quote_No) + 1) + '/' +
RIGHT(CONVERT(VARCHAR(10), GETDATE(), 103), 7)
FROM
Quote_Pref_No
WHERE
ID = 1
以上返回空值。
表Quote_Pref_no是:
CREATE TABLE [dbo].[Quote_Pref_no]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[Quote_No] [nvarchar](50) NULL DEFAULT ('Q1500'),
[Mth] [nvarchar](3) Null,
[Year] [nvarchar](4) Null
) ON [PRIMARY]
如何设置数字以返回正确的格式并逐一递增引用?
答案 0 :(得分:0)
select Quote_No = 'Q' + '/' + CAST(CAST(SUBSTRING(Quote_No,2,LEN(Quote_No)) AS BIGINT)+ 1 AS VARCHAR(50)) + '/' + MONTH(GETDATE())+YEAR(GETDATE()) from Quote_Pref_No where ID = 1
答案 1 :(得分:0)
试试这个:
DECLARE @Quote_No nvarchar(50)='Q1500'
DECLARE @i INT=1
WHILE(@i<=10)
BEGIN
IF(CHARINDEX('/',@Quote_No)!=0)
BEGIN
SELECT @Quote_No = LEFT(@Quote_No, CHARINDEX('/',@Quote_No)-1)
END
SELECT @Quote_No = 'Q'+CONVERT(VARCHAR(10),CONVERT(INT,RIGHT(@Quote_No,LEN(@Quote_No)-1))+1)+'/'+CONVERT(VARCHAR(10),MONTH(GETDATE()))+'/'+CONVERT(VARCHAR(10),YEAR(GETDATE()))
SELECT @Quote_No
SET @i=@i+1
END