Вопрос или проблема
Так что, очевидно, функция “нравится” не работает с фактическими значениями столбцов. Знает ли кто-то, КАК заставить это работать? Или есть альтернатива, которая могла бы сработать? Вот что я пытаюсь достичь:
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 + '%';
Объяснение запроса:
-
*`SELECT FROM customers
:** Этот запрос выбирает все записи из таблицы
customers`. -
WHERE sccholdername NOT LIKE '%' + sfirstname + '%'
: Здесь мы проверяем, не содержится лиsfirstname
вsccholdername
. Знак%
используется как подстановочный символ, который соответствует любому количеству символов. -
AND sccholdername NOT LIKE '%' + slastname + '%'
: Данное условие проверяет, не содержится лиslastname
вsccholdername
.
Таким образом, весь запрос возвращает записи, где ни имя, ни фамилия не содержатся в поле sccholdername
.
Результат:
При выполнении такого запроса вы получите все записи из таблицы customers
, в которых значение sccholdername
не включает как имя, так и фамилию клиента. Это поможет вам выявить потенциальные несоответствия, как в случае с Scott Drewyor.
Если у вас есть дополнительные вопросы или вы хотите уточнить, как улучшить запрос, не стесняйтесь задавать их.