因为您尚未声明NVARCHAR变量的大小,所以在第一个示例中,内容@val为"0",而不是"0320".
NVARCHAR
@val
要解决此问题,请使用DECLARE @val NVARCHAR(10).
DECLARE @val NVARCHAR(10)
DECLARE @val NVARCHAR(10) BEGIN SET @val = '0320' SELECT 1 WHERE CAST(SUBSTRING(@val, 3, 2) AS INT) + 2000 < YEAR(GETDATE()) END