Intereting Posts
Многократная проверка SQL JPA: как сопоставить тип уникального идентификатора SQL Server SQL Server 2008 – запрос для получения результата в формате фракций SQL UPDATE TOP с ORDER BY? Отображение даты и времени с использованием имени месяца в T-SQL Улучшение производительности поиска в больших наборах данных Каковы наилучшие методы использования GUID в качестве первичного ключа, особенно в отношении производительности? Пожалуйста, помогите мне понять, как конвертировать мой код для работы, как эта тема Можно ли установить локальную переменную, чтобы разрешить любое значение? Как установить полнотекстовый текст на SQL Server 2008? Понимание различий между CUBE и ROLLUP Как привести строку в предложение SQL WHERE Преобразовать, например. 2012-05-25 – секунды с 1 января 1970 г. Получение связанных строковых данных при группировке по SQL Server 2008 SQL Server – объединение строк в список, разделенный запятыми

SQL Server: используйте CASE с LIKE

Я довольно новичок в SQL и надеюсь, что кто-то здесь поможет мне в этом.

У меня есть хранимая процедура, в которой я хотел бы передать другое значение в зависимости от того, содержит ли столбец определенную страну или нет.

Пока я использовал CASE только при проверке соответствия с определенным номером или значением, поэтому я не уверен в этом. Может ли кто-нибудь сказать мне, если следующее верно и правильно, или дайте мне знать, как правильно это записать (только в отношении части в скобках)?

 (CASE countries WHEN LIKE '%'+@selCountry+'%' THEN 'national' ELSE 'regional') AS validity 

Примечания: @selCountry – это имя переменной страны, страны могут быть пустыми, одна страна или несколько стран разделены запятой и пробелом. В принципе, я просто хочу проверить, содержит ли страны @selCountry, и если да, то установите значение «национальный».

Большое спасибо заранее, Майк.

Solutions Collecting From Web of "SQL Server: используйте CASE с LIKE"

Это синтаксис, который вам нужен:

 CASE WHEN countries LIKE '%'+@selCountry+'%' THEN 'national' ELSE 'regional' END 

Хотя, согласно вашей первоначальной проблеме, я бы решил ее по-другому, разделив содержимое @selcountry на таблицу и присоединившись к ней.

Добавьте, наконец, END перед именем псевдонима.

 CASE WHEN countries LIKE '%'+@selCountry+'%' THEN 'national' ELSE 'regional' END AS validity 

Например:

 SELECT CASE WHEN countries LIKE '%'+@selCountry+'%' THEN 'national' ELSE 'regional' END AS validity FROM TableName 

Одной из первых вещей, которые вам нужно узнать о SQL (и реляционных базах данных), является то, что вы не должны хранить несколько значений в одном поле.

Вы должны создать другую таблицу и сохранить одно значение для каждой строки.

Это упростит ваш запрос и улучшит структуру вашей базы данных.

 select case when exists (select countryname from itemcountries where yourtable.id=itemcountries.id and countryname = @country) then 'national' else 'regional' end from yourtable