我收到的短信代码如“yyyy / mm-digit”(每封邮件的数字递增)。所以我想确保用户发送的代码完全采用该格式,否则为另一个动作。怎么样?
这是我要检查的代码,但它总是执行else块,为什么?注意:我想要它,例如“2014/8位”有点模式,怎么样? (它随年月而变化)
这是我的小小努力,但它正在投入dateitme转换失败错误加上它可能还有其他问题,帮助
Alter PROCEDURE TestTrigger
AS
BEGIN
Begin Try
Declare @msg as varchar(20)
SELECT @msg = '2014/9-1'
DECLARE @yyyymm varchar(255) = Convert(Varchar ,(cast(year(@msg) as varchar(255)) + '/' +
right(cast(month(@msg) as varchar(255)), 2)
));
IF (@msg like @yyyymm + '-[0-9]%' and
@msg not like @yyyymm + '-%[^0-9]%'
)
BEGIN
Print 'Done'
END
ELSE
BEGIN
Print 'Not Done'
END
END TRY
BEGIN CATCH
Select ERROR_MESSAGE() as ErrorMsg
END CATCH
END
GO
答案 0 :(得分:0)
试试这个
你在当天的比赛中错过了'0'。请看下面: 之前是:'2014 / 9-2' 更正SELECT @msg ='2014 / 09-2'
完整解决方案如下所述:
Declare @msg as varchar(20)
SELECT @msg = '2014/09-2'
DECLARE @yyyymm varchar(255) = (cast(year(getdate()) as varchar(255)) + '/' +
right('00' + cast(month(getdate()) as varchar(255)), 2)
);
IF (@msg like @yyyymm + '-[0-9]%' and
@msg not like @yyyymm + '-%[^0-9]%'
)
BEGIN
Print 'Done'
END
ELSE
BEGIN
Print 'Not Done'
END
感谢。
答案 1 :(得分:0)
这意味着你要设置 选择@msg ='2014 / 8-2'。尝试将其更改为 选择@msg ='2014 / 08-2',你需要在8之前追加'0',因为@yyyymm将作为'2014-08'出现。