0
У меня есть параметр на SQL, и я получил вопрос, когда речь заходит об этой ситуацииSQL логики для проверки параметра
declare @MonRemark varchar(10) = 's'
declare @ConfBy varchar(10)= 's'
declare @confstatus varchar(10)= 's'
declare @StatGD varchar(10)= ''
declare @StatGC varchar(50)= ''
declare @STATGTWO varchar(50)= ''
IF @MonRemark <> '' and (@ConfBy = '' OR @confstatus = '' and (@StatGD = '' or @StatGC = '' or @STATGTWO = '')) BEGIN
print 'a'
END
ELSE IF @ConfBy <> '' and (@MonRemark = '' OR @confstatus = '' AND (@StatGD = '' or @StatGC = '' or @STATGTWO = '')) BEGIN
print 'b'
END
ELSE IF @confstatus <> '' and @MonRemark = '' AND @ConfBy = '' AND (@StatGD = '' or @StatGC = '' or @STATGTWO = '') BEGIN
print 'c'
END
ELSE IF (@StatGD <> '' or @StatGC <> '' or @STATGTWO <> '') and @confstatus = '' AND @MonRemark = '' AND @ConfBy = '' BEGIN
print 'd'
END
ELSE BEGIN
print 'e'
END
если я заполнил параметр как то, что я пишу выше, я хочу, чтобы получить, но это всегда печатайте E, есть ли способ получить A?
Вы никогда не получите A, если вы заполните ConfBy и Confstatus с помощью 's'. вам нужно будет изменить постоянное значение или логическое правило, чтобы получить то, что вам нужно. – cyan
Это так, если вы хотите получить результат 'A', все условие должно« TRUE », но там результаты похожи на' IF TRUE и (FALSE и (TRUE)) BEGIN PRINT 'a''. Ваше условие возвращает 'FALSE', потому что' @ ConfBy' и '@ confstatus' не являются NULL. Оба '@ ConfBy' и' @ confstatus' имеют значения 'S' – JTR