Предложение CASE / EXISTS IN WHERE в SQL Server

Я не уверен, почему вы хотите проверить дополнительный адрес электронной почты, но я бы посоветовал вам использовать

^$|^[^@\s]+@[^@\s]+$

, что означает

^$        empty string
|         or
^         beginning of string
[^@\s]+   any character but @ or whitespace
@         
[^@\s]+
$         end of string

Вы выиграли 't прекратить поддельные электронные письма в любом случае, и таким образом вы не прекратите действительные адреса.

0
задан user2675939 17 January 2019 в 13:43
поделиться

3 ответа

Люди всегда хотят использовать CASE, когда будут работать простые логические комбинации:

WHERE
Location.CompanyID NOT IN (123, 344, 444, 565)
OR Location.LocationTypeID IS NOT NULL

Обратите внимание, что я перевернул первое условие, поэтому нам нужно, чтобы второе условие было истинным, только если первый оказывается ложным. Конечно, они оба могут быть правдой, но это не должно иметь значения.

0
ответ дан Damien_The_Unbeliever 17 January 2019 в 13:43
поделиться

Попробуйте следующий запрос -:

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

0
ответ дан IShubh 17 January 2019 в 13:43
поделиться

использовать ваше состояние, как показано ниже

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)          
     )
0
ответ дан Zaynul Abadin Tuhin 17 January 2019 в 13:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: