SQL Server как функция, используя значения столбцов вместо строки

Вопрос или проблема

Так что, очевидно, функция “нравится” не работает с фактическими значениями столбцов. Знает ли кто-то, КАК заставить это работать? Или есть альтернатива, которая могла бы сработать? Вот что я пытаюсь достичь:

sfirstname   slastname       sccholdername
SCOTT        DREWYOR         KENT/MICHELLE
STEPHANIE    PIERSON         PIERSON/STEPHANIE
AMBER D      LINDSEY         MURRAY/AMBER
ALEXIA       SNELL           SNELL/D
JOHN         MESSING         MESSING/JOHN

В приведенном выше списке видно, что в каждом случае в столбце sccholdername содержится либо имя, либо фамилия клиента. ИСКЛЮЧАЯ SCOTT DREWYOR. Это может означать, что неверная кредитная карта привязана к аккаунту этого человека. Мне нужно запустить скрипт, который идентифицирует каждую такую ситуацию, где в столбце sccholdername нет ни имени, ни фамилии.

Я пробовал простые варианты, такие как:

select * from customers where sccholddername not like sfirstname or sccholdername not like slastname

Определенно не работает.

Ответ или решение

Для решения вашей задачи в Microsoft SQL Server вам действительно нужно использовать оператор LIKE с значениями из колонок. Однако, если вы непосредственно используете LIKE с колонками, нужно немного изменить ваш запрос.

Ваш первоначальный запрос содержит логическую ошибку: необходимо использовать оператор AND вместо OR, чтобы убедиться, что оба условия выполняются. Кроме того, в каждом сравнении вы можете использовать конструкцию с LIKE, чтобы проверить, содержится ли имя или фамилия в колонке sccholdername.

Вот корректный пример SQL-запроса, который решает вашу задачу:

SELECT * 
FROM customers 
WHERE sccholdername NOT LIKE '%' + sfirstname + '%' 
AND sccholdername NOT LIKE '%' + slastname + '%';

Объяснение запроса:

  1. *`SELECT FROM customers:** Этот запрос выбирает все записи из таблицыcustomers`.

  2. WHERE sccholdername NOT LIKE '%' + sfirstname + '%': Здесь мы проверяем, не содержится ли sfirstname в sccholdername. Знак % используется как подстановочный символ, который соответствует любому количеству символов.

  3. AND sccholdername NOT LIKE '%' + slastname + '%': Данное условие проверяет, не содержится ли slastname в sccholdername.

Таким образом, весь запрос возвращает записи, где ни имя, ни фамилия не содержатся в поле sccholdername.

Результат:

При выполнении такого запроса вы получите все записи из таблицы customers, в которых значение sccholdername не включает как имя, так и фамилию клиента. Это поможет вам выявить потенциальные несоответствия, как в случае с Scott Drewyor.

Если у вас есть дополнительные вопросы или вы хотите уточнить, как улучшить запрос, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...