Я ставлю під сумнів значення використання логічного значення в TSQL. Кожного разу, коли я починав бажати Booleans & For Loops, я розумів, що підходжу до проблеми як програміст на C, а не програміст на SQL. Проблема стала тривіальною, коли я перемикав передачі.
У SQL ви маніпулюєте наборами даних. "WHERE BOOLEAN" неефективний, оскільки не змінює набір, з яким ви працюєте. Вам потрібно порівняти кожен рядок з чимось, щоб речення фільтра було ефективним. Таблиця / результат - це iEnumerable, оператор SELECT - цикл FOREACH.
Так, "WHERE IsAdmin = True" читати приємніше, ніж "WHERE IsAdmin = 1"
Так, "WHERE True" було б приємніше, ніж "WHERE 1 = 1, ..." при динамічній генерації TSQL.
і, можливо, передача логічного значення збереженому proc може зробити оператор if більш читабельним.
Але здебільшого, чим більше таблиць IF, WHILE та Temp є у вашому TSQL, тим більша ймовірність того, що вам слід його рефакторинг.