"yyyy/mm-digit"(모든 메시지와 함께 숫자가 증가합니다)와 같은 코드를 받았습니다. 그래서 나는 사용자에 의해 보내지는 코드가 정확히 그 포맷으로되어 있는지 확인하고 싶다. 그래서 방법 ?문자열을 SQL의 정규 표현식과 비교합니다.
여기 내 코드를 확인하지만 항상 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