Вопрос SQL-запроса - PullRequest
       9

Вопрос SQL-запроса

0 голосов
/ 05 августа 2009

У меня есть таблица, которая имеет около 6 полей. Я хочу написать оператор SQL, который будет возвращать все записи, которые не имеют «Англия» в поле страны, английский в поле языка и английский в поле комментариев.

Каким будет SQL-запрос?

Ответы [ 6 ]

3 голосов
/ 05 августа 2009

Ну, ваш вопрос во многом зависит от того, какую СУБД вы используете и как выглядит ваша таблица. Это был бы один из способов сделать это в MySQL или TSQL:

SELECT *
FROM tbl
WHERE country NOT LIKE '%England%' AND language NOT LIKE '%english%'
     AND comments NOT LIKE '%english%';

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

SELECT *
FROM tbl
WHERE country!='England' AND language!='english'
    AND comments NOT LIKE '%english%';
1 голос
/ 05 августа 2009

Чтобы игнорировать регистр:

SELECT *
FROM SixFieldTable
WHERE LOWER(Country) <> 'england' AND
LOWER(language) <> 'english' AND
LOWER(comments) NOT LIKE '%english%'
1 голос
/ 05 августа 2009

Вышеуказанные решения не учитывают возможные пустые значения в столбцах. Подобные

Where country <> 'England'

будет ошибочно исключать записи, в которых Страна имеет значение null, по умолчанию для параметров подключения к SQL Server.

Вместо этого вы можете попробовать

IsNull(Country, '') <> 'England'
1 голос
/ 05 августа 2009

Вы хотите что-то вроде

select * from myTableOfMadness
where country <> 'England'
and language <> 'English'
and comments not like '%english%'

Не уверен, хотите ли вы сравнения «и» или «или», или все «не» Ваша структура предложений несколько вводит в заблуждение.

1 голос
/ 05 августа 2009

Начните с этого и при необходимости измените:

SELECT *
FROM SixFieldTable
WHERE Country <> 'England'
AND language <> 'english'
AND comments NOT LIKE '%english%'

Надеюсь, это поможет.

0 голосов
/ 05 августа 2009

Попробуйте

Select * From table
Where Country Not Like '%England%'
 And Language Not Like '%English%'
 And comments Not Like '%English%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...