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

Откуда:
Сообщений: 11
Есть длинная переменная, типа "АП РНСОН@АР ВИ$АПКОНЬАПИ^ЫВЫВ* ЫУЖД!АИСТПВА"
Есть таблица с двум колонками SMALLINT и NVARCHAR(5), типа:

1, СЛОН
2, КОНЬ
3, МУХА
4, УЖ

Нужен запрос вывести значения SMALLINT при нахождении вхождения поля NVARCHAR(5) из таблицы в теле переменной.
27 сен 11, 16:48    [11343412]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Avtograf, вам нужен CHARINDEX()
27 сен 11, 16:54    [11343463]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Avtograf,

SELECT CASE WHEN CHARINDEX('строка','тут длинная строка',1)<>0 THEN 'есть' ELSE 'нету' END
27 сен 11, 16:56    [11343480]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Avtograf
Member

Откуда:
Сообщений: 11
Shakill
Avtograf, вам нужен CHARINDEX()



SELECT CHARINDEX ( 'us', 'mouse')
--------------------------------------
3
(1 row(s) affected)


SELECT CHARINDEX ( 'рд', 'петарда')
--------------------------------------
1
(1 row(s) affected)


SELECT CHARINDEX ( 'рд', 'петарда' Cyrillic_General_CI_AS)
--------------------------------------
1
(1 row(s) affected)

Определяет неправильно. Что не так ?
28 сен 11, 11:31    [11346733]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Glory
Member

Откуда:
Сообщений: 104751
SELECT CHARINDEX ( N'рд', N'петарда')
28 сен 11, 11:34    [11346764]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Avtograf
SELECT CHARINDEX ( 'рд', 'петарда')
--------------------------------------
1
(1 row(s) affected)


SELECT CHARINDEX ( 'рд', 'петарда' Cyrillic_General_CI_AS)
--------------------------------------
1
(1 row(s) affected)

Определяет неправильно. Что не так ?


странно. какой у вас сервер?
у меня (2008sp2) первый запрос возвращает 5, а второй без слова collate вообще не работает
попробуйте записывать юникодные строки как N'строка'
28 сен 11, 11:37    [11346798]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Avtograf
Member

Откуда:
Сообщений: 11
kDnZP
Avtograf,

SELECT CASE WHEN CHARINDEX('строка','тут длинная строка',1)<>0 THEN 'есть' ELSE 'нету' END


Получается:

--------------------------------------
нету
нету
есть
нету
нету
(5 row(s) affected)

а надо только "есть"
28 сен 11, 11:49    [11346903]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Avtograf
а надо только "есть"

И что мешает отфильтровать нужные записи ?
28 сен 11, 11:50    [11346915]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Avtograf
Member

Откуда:
Сообщений: 11
Shakill

странно. какой у вас сервер?
у меня (2008sp2) первый запрос возвращает 5, а второй без слова collate вообще не работает
попробуйте записывать юникодные строки как N'строка'


Сервер 2005

Collate - конечно же пропустил.

С N'строка' - заработало.
28 сен 11, 11:56    [11346965]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Avtograf
Member

Откуда:
Сообщений: 11
Glory
Avtograf
а надо только "есть"

И что мешает отфильтровать нужные записи ?


Никак. Сломал мозг напрочь.
Прошу, помогите чайнику !
29 сен 11, 10:05    [11352751]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Avtograf
Никак. Сломал мозг напрочь.
Прошу, помогите чайнику !

В смысле вы не знаете про конструкцию WHERE ?
29 сен 11, 10:09    [11352774]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Avtograf
Member

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

SELECT 'WH'=
CASE 
	WHEN ( ... )
		THEN 'есть'
		ELSE 'нету'
	END
FROM dbo.T
WHERE [WH] LIKE 'есть'

не катит
29 сен 11, 10:24    [11352854]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Мда
SELECT *
FROM dbo.T
WHERE <здесь проверка из вашего WHEN ( ... )>
29 сен 11, 10:25    [11352864]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос. Обратный поиск.  [new]
Avtograf
Member

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

Большое спасибо.
29 сен 11, 10:31    [11352916]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить