Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
Добрый день!
Народ подскажите, как сделать запрос строки под номером: 3,4,6,10,11
В данной таблице:




DBO.LOCAL
ID Name
1 “qwerty123”, “qwerty321”
2 “qwerty321”, “qwerty123”, “DC\Name_1”
3 “qwerty123”, “DC\Name_1”, “DC\sadfaf”
4 “DC\Name_1”, “DC\Name_2”, “DC\vqevreq”
5 “qwerty321”, “qwerty123”, “DC\Name_1”, “DC\Name_2”
6 “DC\tgfwhfb”
7 “DC\Name_1”, “DC\Name_2”
8 “DC\Name_2”, “DC\Name_1”
9 “DC\Name_2”, “qwerty321”
10 “DC\fewvewwe”, “DC\Name_1”, “DC\Name_2”
11 “DC\Name_1”, "DC\grejgvbrewj", “DC\Name_2”
12 “qwerty123”, “DC\Name_1”
13 …




По логике должно выглядеть так:

SELECT *
FROM DBO.LOCAL
WHERE Name Like ‘%DC\[ТУТ МОЖЕТ БЫТЬ ЧТО УГОДНО, ОТЛИЧНОЕ от DC\Name_1 или ОТЛИЧНОЕ от DC\Name_2, но (!) не исключая строки содержащие их]%'
27 фев 12, 19:12    [12159901]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
iljy
Member

Откуда:
Сообщений: 8711
HFShak,

where id in (...)
27 фев 12, 20:42    [12160301]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
iljy
HFShak,

where id in (...)


Это пример, строк может быть 100к
28 фев 12, 09:00    [12161449]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
iljy
Member

Откуда:
Сообщений: 8711
HFShak
iljy
HFShak,

where id in (...)


Это пример, строк может быть 100к

Да хоть 100М, что это меняет-то??
28 фев 12, 09:59    [12161656]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
iljy
HFShak
пропущено...


Это пример, строк может быть 100к

Да хоть 100М, что это меняет-то??


Не знаю. Мне необходимо выбрать ячейки по столбцу Name.
Я так понимаю Like не очень гибок. В нем можно исключить из поиска символ (Where name like '%DC\[^N]%').
Как мне исключить слово?
28 фев 12, 10:11    [12161724]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
Glory
Member

Откуда:
Сообщений: 104751
HFShak
Как мне исключить слово?

Написать NOT LIKE ?
28 фев 12, 10:14    [12161745]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
Glory
HFShak
Как мне исключить слово?

Написать NOT LIKE ?

В таком случае он исключит строки содержащие DC\Name_1, DC\Name_2.
К примеру в таблицу выше он исключит строку 4, хотя в ней есть нужная информация
28 фев 12, 10:18    [12161776]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
Glory
Member

Откуда:
Сообщений: 104751
HFShak
В таком случае он исключит строки содержащие DC\Name_1, DC\Name_2.
К примеру в таблицу выше он исключит строку 4, хотя в ней есть нужная информация

А вы вообще можете написать условия просто в виде выражений ?
А не словами
Если сможете, то тогда это реализуется в коде
28 фев 12, 10:24    [12161814]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
iljy
Member

Откуда:
Сообщений: 8711
HFShak
Народ подскажите, как сделать запрос строки под номером: 3,4,6,10,11

HFShak
Не знаю. Мне необходимо выбрать ячейки по столбцу Name.

Вы определитесь, вам под номером надо или по полю?

Вам надо выбрать строки, содержащие что-нибудь, отличное от DC\Name_1 и DC\Name_2, так?
28 фев 12, 10:31    [12161862]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
Glory
HFShak
В таком случае он исключит строки содержащие DC\Name_1, DC\Name_2.
К примеру в таблицу выше он исключит строку 4, хотя в ней есть нужная информация

А вы вообще можете написать условия просто в виде выражений ?
А не словами
Если сможете, то тогда это реализуется в коде



Не совсем Вас понял.

Мне нужно выбрать те строки (см. таблицу в первом топике) в которых присутствует DC\Тут_любые_символы.
Почти каждой строке есть DC\Name_1 или DC\Name_2 и редко бывает DC\Тут_любые_символы
Общее у них DC\
Как сделать выборку только тех строк в которых есть DC\Тут_любые_символы?
28 фев 12, 10:32    [12161864]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
iljy
Member

Откуда:
Сообщений: 8711
HFShak,

где проблема-то? Куда уж проще: выкиньте из строки все, что вам не интересно, и посмотрите, есть ли в том, что осталось, то, что вам интересно.
28 фев 12, 10:36    [12161905]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
Glory
Member

Откуда:
Сообщений: 104751
HFShak
Мне нужно выбрать те строки (см. таблицу в первом топике) в которых присутствует DC\Тут_любые_символы.
Почти каждой строке есть DC\Name_1 или DC\Name_2 и редко бывает DC\Тут_любые_символы
Общее у них DC\
Как сделать выборку только тех строк в которых есть DC\Тут_любые_символы?

И где тут условие "Как мне исключить слово" ?
28 фев 12, 10:38    [12161923]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
HFShak,

если я вас правильно понял...
declare @local table(ID int, Name nvarchar(100));
insert @local values
( 1, N'“qwerty123”, “qwerty321”' ),
( 2, N'“qwerty321”, “qwerty123”, “DC\Name_1”' ),
( 3, N'“qwerty123”, “DC\Name_1”, “DC\sadfaf”' ),
( 4, N'“DC\Name_1”, “DC\Name_2”, “DC\vqevreq”' ),
( 5, N'“qwerty321”, “qwerty123”, “DC\Name_1”, “DC\Name_2”' ),
( 6, N'“DC\tgfwhfb”' ),
( 7, N'“DC\Name_1”, “DC\Name_2”' ),
( 8, N'“DC\Name_2”, “DC\Name_1”' ),
( 9, N'“DC\Name_2”, “qwerty321”' ),
( 10, N'“DC\fewvewwe”, “DC\Name_1”, “DC\Name_2”' ),
( 11, N'“DC\Name_1”, "DC\grejgvbrewj", “DC\Name_2”' ),
( 12, N'“qwerty123”, “DC\Name_1”' );

select * from @local
where
replace(Name,'DC\Name_','') like '%DC\%'

но если таблица большая, будет жесть по производительности, при поиске по этому полю, т.к. вы убиваете возможность задействовать индекс...
28 фев 12, 10:51    [12162007]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
SomewhereSomehow
HFShak,

если я вас правильно понял...
declare @local table(ID int, Name nvarchar(100));
insert @local values
( 1, N'“qwerty123”, “qwerty321”' ),
( 2, N'“qwerty321”, “qwerty123”, “DC\Name_1”' ),
( 3, N'“qwerty123”, “DC\Name_1”, “DC\sadfaf”' ),
( 4, N'“DC\Name_1”, “DC\Name_2”, “DC\vqevreq”' ),
( 5, N'“qwerty321”, “qwerty123”, “DC\Name_1”, “DC\Name_2”' ),
( 6, N'“DC\tgfwhfb”' ),
( 7, N'“DC\Name_1”, “DC\Name_2”' ),
( 8, N'“DC\Name_2”, “DC\Name_1”' ),
( 9, N'“DC\Name_2”, “qwerty321”' ),
( 10, N'“DC\fewvewwe”, “DC\Name_1”, “DC\Name_2”' ),
( 11, N'“DC\Name_1”, "DC\grejgvbrewj", “DC\Name_2”' ),
( 12, N'“qwerty123”, “DC\Name_1”' );

select * from @local
where
replace(Name,'DC\Name_','') like '%DC\%'

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


Спасибо, работает.
Моего примера получается так:


SELECT *
FROM DBO.LOCAL
WHERE replace(replace(Name,'DC\Name_1,''),'DC\Name_2','') like '%DC\%'
28 фев 12, 11:15    [12162178]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
Но я всеравно так и не понял насчет LIKE.

Возможно ли, к примеру:

Строка №1: "белка", "берлога", "бензин"
Строка №2: "белка", "берлога", "белье"
...



выбрать те строки, в которые есть слово на "бе", но не искать по словам "белка" и "берлога"?
Как бы исключить из поиска.
Не выбирать и не не выбирать по этим словам, просто пропускать.
28 фев 12, 11:30    [12162276]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
Glory
Member

Откуда:
Сообщений: 104751
HFShak
выбрать те строки, в которые есть слово на "бе", но не искать по словам "белка" и "берлога"?

Что за тип данных такой "слово" ? У вас есть единое символьное поле, к которому применяется условие
Вот когда у вас в поле будет одно ваше "слово"

Почему не используете полнотекстовый поиск ?

Сообщение было отредактировано: 28 фев 12, 11:56
28 фев 12, 11:55    [12162470]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
HFShak
Но я всеравно так и не понял насчет LIKE.

Возможно ли, к примеру:

Строка №1: "белка", "берлога", "бензин"
Строка №2: "белка", "берлога", "белье"
...



выбрать те строки, в которые есть слово на "бе", но не искать по словам "белка" и "берлога"?
Как бы исключить из поиска.
Не выбирать и не не выбирать по этим словам, просто пропускать.
Что Вы называете "словом"?
28 фев 12, 12:00    [12162504]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
HFShak
Но я всеравно так и не понял насчет LIKE.

Возможно ли, к примеру:

Строка №1: "белка", "берлога", "бензин"
Строка №2: "белка", "берлога", "белье"
...



выбрать те строки, в которые есть слово на "бе", но не искать по словам "белка" и "берлога"?
Как бы исключить из поиска.
Не выбирать и не не выбирать по этим словам, просто пропускать.

как определить и на основание чего вы решили, что слова белка и берлога не надо включать в результат поиска?
28 фев 12, 12:06    [12162547]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
iap
HFShak
Но я всеравно так и не понял насчет LIKE.

Возможно ли, к примеру:

Строка №1: "белка", "берлога", "бензин"
Строка №2: "белка", "берлога", "белье"
...



выбрать те строки, в которые есть слово на "бе", но не искать по словам "белка" и "берлога"?
Как бы исключить из поиска.
Не выбирать и не не выбирать по этим словам, просто пропускать.
Что Вы называете "словом"?


В данном примере словом я называю ряд символов состоящих из символов "б", "е", "л", "к", "а" и символов "б", "е", "р", "л", "о", "г", "а"

Мне надо выполнить поиск по символа "бе" , но ряд символов "белка" и "берлога" мне не интересен.

Slava_Nik
HFShak
Но я всеравно так и не понял насчет LIKE.

Возможно ли, к примеру:

Строка №1: "белка", "берлога", "бензин"
Строка №2: "белка", "берлога", "белье"
...



выбрать те строки, в которые есть слово на "бе", но не искать по словам "белка" и "берлога"?
Как бы исключить из поиска.
Не выбирать и не не выбирать по этим словам, просто пропускать.

как определить и на основание чего вы решили, что слова белка и берлога не надо включать в результат поиска?


На основании того, что таблица имеет 50 тыс строки и слова "белка" и "берлога" есть в каждой строки и есть уникальные строки в которых есть что то начинающееся на "бе".
28 фев 12, 12:14    [12162622]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Если в строке есть фрагмент "побелка", то что с этим делать?
Это ведь не слово "белка"? Или как?
28 фев 12, 12:18    [12162665]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
iap
Если в строке есть фрагмент "побелка", то что с этим делать?
Это ведь не слово "белка"? Или как?


Начинаются строго на "бе"
28 фев 12, 12:20    [12162680]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
Glory
Member

Откуда:
Сообщений: 104751
HFShak
В данном примере словом я называю ряд символов состоящих из символов "б", "е", "л", "к", "а" и символов "б", "е", "р", "л", "о", "г", "а"

В таком определении "бензин" не является словом. Потому что не подходит ни под "б", "е", "л", "к", "а" ни под "б", "е", "р", "л", "о", "г", "а"

Вы умеете формализовывать понятия ?
28 фев 12, 12:21    [12162685]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
HFShak
В данном примере словом я называю ряд символов состоящих из символов "б", "е", "л", "к", "а" и символов "б", "е", "р", "л", "о", "г", "а"

Мне надо выполнить поиск по символа "бе" , но ряд символов "белка" и "берлога" мне не интересен.
Я почему-то думал, что Вы скажете, что у Вас есть список разделителей слов,
а слово - это последовательность неразделителей,
ограниченная либо разделителями, либо началом, либо концом строки.
Раз это не так, то извините...

Но напрашивается полнотекстовый поиск, как Glory уже сказал.
28 фев 12, 12:22    [12162697]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
HFShak
Member

Откуда:
Сообщений: 29
iap
Если в строке есть фрагмент "побелка", то что с этим делать?
Это ведь не слово "белка"? Или как?


Если есть побелка, то данная информация интересна, не интересно только строго "белка" и "берлога"
28 фев 12, 12:22    [12162700]     Ответить | Цитировать Сообщить модератору
 Re: Исключить значения из поиска, но не исключать строки содержащие их  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
HFShak
iap
Если в строке есть фрагмент "побелка", то что с этим делать?
Это ведь не слово "белка"? Или как?


Начинаются строго на "бе"
Это мы можем между собой говорить "начинается".
А сервер-то как это поймёт? Ему ж точные инструкции дать надо.
28 фев 12, 12:23    [12162709]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить