Я не уверен, почему вы хотите проверить дополнительный адрес электронной почты, но я бы посоветовал вам использовать
^$|^[^@\s]+@[^@\s]+$
, что означает
^$ empty string
| or
^ beginning of string
[^@\s]+ any character but @ or whitespace
@
[^@\s]+
$ end of string
Вы выиграли 't прекратить поддельные электронные письма в любом случае, и таким образом вы не прекратите действительные адреса.
Люди всегда хотят использовать CASE
, когда будут работать простые логические комбинации:
WHERE
Location.CompanyID NOT IN (123, 344, 444, 565)
OR Location.LocationTypeID IS NOT NULL
Обратите внимание, что я перевернул первое условие, поэтому нам нужно, чтобы второе условие было истинным, только если первый оказывается ложным. Конечно, они оба могут быть правдой, но это не должно иметь значения.
Попробуйте следующий запрос -:
SELECT
UserID
FROM [Account].[User] AS [User]
INNER JOIN [Account].[Location] as [Location]
ON [Location].[LocationID] = [User].[LocationID]
WHERE
Location.CompanyID IN (123, 344, 444, 565)
AND Location.LocationTypeID IS NOT NULL
SQL server 2014
использовать ваше состояние, как показано ниже
SELECT
UserID
FROM [Account].[User] AS [User]
INNER JOIN [Account].[Location] as [Location]
ON [Location].[LocationID] = [User].[LocationID]
where
(
Location.CompanyID IN (123, 344, 444, 565)
AND Location.LocationTypeID IS NOT NULL
)
OR
(
Location.CompanyID not IN (123, 344, 444, 565)
)