Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Знак неравенства в MS SQL server 2008  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
как в запросе выбрать записи которые НЕ равны определенному значению?
MS SQL server 2008

ни так
select * from table where pole<>'значение'

ни так
select * from table where pole!='значение'

не выдает нужный результат :(
19 июл 11, 16:35    [10996034]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
А "нужный" это какой?
19 июл 11, 16:36    [10996041]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
а
select * from table where pole='значение'

выдает список - но мне его как раз нужно исключить из выборки
помогите советом
19 июл 11, 16:38    [10996056]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Призрак
Member

Откуда:
Сообщений: 482
<> ... or is null
19 июл 11, 16:41    [10996071]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Ольга Семенова
выдает список - но мне его как раз нужно исключить из выборки
помогите советом


Приведите пример "списка" для запроса:

select * from table where pole='значение'

И пример результата запроса

select * from table where pole<>'значение'

для любого значения из первого списка.
19 июл 11, 16:41    [10996072]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
select * from table
except
select * from table where pole='значение'
в порядке бреда, ага
19 июл 11, 16:42    [10996075]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
список

Иванов
Петров
Сидоров
select * from table where pole='Иванов'
выдает
Иванов

Иванов
Петров
Сидоров
select * from table where pole<>'Иванов'

мне нужно чтобы выдало
Петров
Сидоров

а выдает всех почему-то
Иванов
Петров
Сидоров
19 июл 11, 16:44    [10996090]     Ответить | Цитировать Сообщить модератору
 Re: Составление запроса на сумму и проверка на уникальность  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
Гадя Петрович
select * from table
except
select * from table where pole='значение'
в порядке бреда, ага


ураа - так сработало

а почему не работает мой код?
19 июл 11, 16:47    [10996105]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
интуит
Guest
select * from table where pole<>N'Иванов'
19 июл 11, 16:48    [10996110]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вы или что-то не то делаете, или что-то не договариваете.

set nocount on

declare @t table (
    name    varchar (50)
)

insert @t
            select 'Иванов'
union all   select 'Петров'
union all   select 'Сидоров '

select * from @t a where a.name = 'Иванов'
select * from @t a where a.name != 'Иванов'


name
--------------------------------------------------
Иванов

name
--------------------------------------------------
Петров
Сидоров 
19 июл 11, 16:48    [10996111]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
странно тогда

у меня через except убрались из выборки ненужные записи со значением ИВАНОВ
19 июл 11, 16:55    [10996147]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ольга Семенова
странно тогда

у меня через except убрались из выборки ненужные записи со значением ИВАНОВ
1. Что за тип этот Иванов?
2. Может ли быть вместо Иванова NULL?
3. Оператор "<>" - стандарт ANSI SQL. В отличие от "!=".
SELECT *
FROM [table]
WHERE NOT EXISTS(SELECT pole INTERSECT 'Иванов');
Это чтобы в сравнении участвовало только одно поле, а выдавались все.
А то ведь UNION/EXCEPT/INTERSECT работают на уровне записей (для всех полей каждой записи)
19 июл 11, 17:13    [10996262]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31962
Ольга Семенова
странно тогда

у меня через except убрались из выборки ненужные записи со значением ИВАНОВ
Используйте лучьше <>, не надо except
19 июл 11, 17:14    [10996273]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SELECT не дописал:
iap
Ольга Семенова
странно тогда

у меня через except убрались из выборки ненужные записи со значением ИВАНОВ
1. Что за тип этот Иванов?
2. Может ли быть вместо Иванова NULL?
3. Оператор "<>" - стандарт ANSI SQL. В отличие от "!=".
SELECT *
FROM [table]
WHERE NOT EXISTS(SELECT pole INTERSECT SELECT 'Иванов');
Это чтобы в сравнении участвовало только одно поле, а выдавались все.
А то ведь UNION/EXCEPT/INTERSECT работают на уровне записей (для всех полей каждой записи)
19 июл 11, 17:15    [10996277]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
iap
SELECT не дописал:
iap
пропущено...
1. Что за тип этот Иванов?
2. Может ли быть вместо Иванова NULL?
3. Оператор "<>" - стандарт ANSI SQL. В отличие от "!=".
SELECT *
FROM [table]
WHERE NOT EXISTS(SELECT pole INTERSECT SELECT 'Иванов');
Это чтобы в сравнении участвовало только одно поле, а выдавались все.
А то ведь UNION/EXCEPT/INTERSECT работают на уровне записей (для всех полей каждой записи)


а как будет выглядеть если мне ИВАНОВ и ПЕТРОВ нужно исключить?

SELECT *
FROM [table]
WHERE NOT EXISTS(SELECT pole INTERSECT SELECT 'Иванов', 'ПЕТРОВ');

так?
19 июл 11, 17:34    [10996425]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ольга Семенова
iap
SELECT не дописал: пропущено...


а как будет выглядеть если мне ИВАНОВ и ПЕТРОВ нужно исключить?

SELECT *
FROM [table]
WHERE NOT EXISTS(SELECT pole INTERSECT SELECT 'Иванов', 'ПЕТРОВ');

так?
Вы не ответили про NULL. Если его там быть не может, то пишите <>, и не мучайтесь
И про юникод не уточнили...
SELECT *
FROM [table]
WHERE NOT EXISTS(SELECT pole INTERSECT SELECT 'Иванов'  INTERSECT SELECT 'ПЕТРОВ');
19 июл 11, 17:38    [10996443]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
a_vdrug?
Guest
Ольга Семенова,
а вот так попробуйте на всякий случай:
select * from table where pole<>upper('значение')
19 июл 11, 17:39    [10996452]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
a_vdrug?
Guest
вернее, так:
select * from table where upper(pole)<>upper('значение')
19 июл 11, 17:41    [10996464]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
Вы не ответили про NULL. Если его там быть не может, то пишите <>, и не мучайтесь
Или
pole NOT IN('Иванов','Петров')
19 июл 11, 17:41    [10996467]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
a_vdrug?
вернее, так:
select * from table where upper(pole)<>upper('значение')
А тогда ещё вопрос к Ольге Семёновой: А COLLATION у Вас какой?!
19 июл 11, 17:43    [10996486]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
iap
iap
Вы не ответили про NULL. Если его там быть не может, то пишите <>, и не мучайтесь
Или
pole NOT IN('Иванов','Петров')


во - самый раз :)

насчет NUll - да поле может быть и NUll
19 июл 11, 17:51    [10996557]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
а нет - ни одного NULL в фильтрующем мне поле НЕТ. Все заполнены фамилиями
19 июл 11, 17:52    [10996566]     Ответить | Цитировать Сообщить модератору
 Re: Знак неравенства в MS SQL server 2008  [new]
уТКа
Member

Откуда: Страна дураков и разбитых дорог
Сообщений: 1266
Ольга Семенова,

SELECT * FROM table WHERE IsNull(pole, '') NOT IN ('Иванов', 'Петров')
19 июл 11, 18:39    [10996784]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить