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

Откуда:
Сообщений: 266
Здравствуйте.
Используем SQl-server 2008

Запрос
SELECT * FROM Table WHERE task LIKE '$testword '

Где $test = 'test'.$ok;

$ok может быть одним из значений а я о е ы и а я ов ев ей у ю ам ям ой ою ей ею ом ем ю ами ями ах ях

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

Возможно ли это сделать одним запросом без 15 условий после where( т.е. не писать WHERE task LIKE 'testа ' OR task LIKE 'testя ' OR task LIKE 'testо ' и т.п.) ?

Подскажите возможно ли это?
25 фев 14, 17:43    [15627877]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Amateur7
Где $test = 'test'.$ok;

А что это за синтаксис $test = ?
25 фев 14, 17:45    [15627899]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
Где $test = 'test'.$ok;

А что это за синтаксис $test = ?


это php

получается так:

$ok может быть одним из значений а я о е ы и а я ов ев ей у ю ам ям ой ою ей ею ом ем ю ами ями ах ях
$test = 'test'.$ok;


SELECT * FROM Table WHERE task LIKE '$testword '
25 фев 14, 17:50    [15627940]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Amateur7
это php

А вопрос почему тогда в этом форуме ?
Какое отношение переменные php имеют к TSQL ?
25 фев 14, 17:51    [15627953]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
holod-iinna
Member

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

если принять что основная часть уникальна в таблице то так

SELECT * FROM Table WHERE task LIKE 'testword%'
25 фев 14, 18:03    [15628053]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Amateur7
Здравствуйте.
Используем SQl-server 2008

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

Возможно ли это сделать одним запросом без 15 условий после where( т.е. не писать WHERE task LIKE 'testа ' OR task LIKE 'testя ' OR task LIKE 'testо ' и т.п.) ?
select ...
from [table] t
cross join(values('а'),('я'),...,('ях'))v(ok)
where t.task like concat('%','test',v.ok,' %')
с PHP - ручками, ручками
25 фев 14, 18:04    [15628058]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Glory
Amateur7
это php

А вопрос почему тогда в этом форуме ?
Какое отношение переменные php имеют к TSQL ?


смысл в том, что в SQL есть свои возможные условия, например если нужно выбрать искомое слово с а, и, е на конце, то достаточно сделать
SELECT * FROM Table Where colums = 'test[аие]'
, но это по одной букве(а,и или е),
а возможно ли сделать тоже самое, но для элементов(как в моем случае), т.е. а, я, о, е, ы, и, ов и т.п., т.е. по заданным элементам, а не только 1 символу?
25 фев 14, 18:05    [15628070]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
ой, concat с SQL2012... тогда просто через +
25 фев 14, 18:06    [15628075]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Cygapb-007,

у меня только как пример, чтобы было более менее понятно к чему стремлюсь.
Если можно сделать весь запрос на sql даже лучше будет.
25 фев 14, 18:07    [15628083]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Cygapb-007
ой, concat с SQL2012... тогда просто через +


поясните пожалуйста, непонятно
25 фев 14, 18:08    [15628093]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
holod-iinna
Amateur7,

если принять что основная часть уникальна в таблице то так

SELECT * FROM Table WHERE task LIKE 'testword%'


посмотрите пожалуйста вопрос внимательнее
25 фев 14, 18:09    [15628100]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Amateur7
Cygapb-007
ой, concat с SQL2012... тогда просто через +


поясните пожалуйста, непонятно
select ...
from [table] t
cross join(values('а'),('я'),...,('ях'))v(ok)
where t.task like '%test'+v.ok+' %'
25 фев 14, 18:31    [15628247]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Amateur7,

в SQL12 вроде regexp есть
а тут только этот кривой like

я бы посоветовал конкретное условие сформулировать в виде функции
чтобы копипастить и потом поддерживать во многих местах не приходилось
25 фев 14, 22:05    [15629329]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
leov
Amateur7,

в SQL12 вроде regexp есть
а тут только этот кривой like

я бы посоветовал конкретное условие сформулировать в виде функции
чтобы копипастить и потом поддерживать во многих местах не приходилось
Ключевое слово - "вроде".
LIKE кривой в кривых руках
26 фев 14, 08:41    [15630272]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
кривой like
Guest
leov
Amateur7,

в SQL12 вроде regexp есть
а тут только этот кривой like

я бы посоветовал конкретное условие сформулировать в виде функции
чтобы копипастить и потом поддерживать во многих местах не приходилось


при желании и необходимости RegExp добавляется ч/з CLR сборку за 10 минут.
26 фев 14, 10:40    [15630752]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
iap
leov
Amateur7,

в SQL12 вроде regexp есть
а тут только этот кривой like

я бы посоветовал конкретное условие сформулировать в виде функции
чтобы копипастить и потом поддерживать во многих местах не приходилось
Ключевое слово - "вроде".
LIKE кривой в кривых руках
ну пользоваться можно и деться в общем некуда
"вроде" потому что сам не пользовался, но тут недавно какая-то тема про них была
ну до regexp-ов лайку как до пекина
у меня по ним есть книжка аж на 600 страниц!!!
пипец, просто целая вселенная в одной функции
26 фев 14, 11:12    [15630943]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
кривой like
leov
Amateur7,

в SQL12 вроде regexp есть
а тут только этот кривой like

я бы посоветовал конкретное условие сформулировать в виде функции
чтобы копипастить и потом поддерживать во многих местах не приходилось


при желании и необходимости RegExp добавляется ч/з CLR сборку за 10 минут.
сомневаюсь я что он будет быстро работать из под sql
тут ведь всякая функция почти при любой операции сразу умножается на сто тыщ милионов строчек
и если она не написана самим микрософтом специально для такого случая
то автоматом на тормоза попадешь

я в общем ни за что не агитирую
просто для такого случая как в начале написано regexp это самое то
26 фев 14, 11:19    [15630983]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое написание WHERE ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
В стандарте ANSI регулярные выражения реализуются предикатом SIMILAR

Помечтаем, часть 2
26 фев 14, 11:25    [15631029]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить