Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Чем заменить функцию instr в SQL

117  
lubopitniy прохожий19.09.07 22:43
19.09.07 22:43 
У меня есть две колонки в таблице
в них содержатся строки
если содержание одной колонки содержится в другой то я хочу заменить ее содержание
как это сделать если в SQL нету функции inStr?
Спасибо за ответ!!
#1 
  digital.pilot коренной житель19.09.07 22:50
digital.pilot
NEW 19.09.07 22:50 
в ответ lubopitniy 19.09.07 22:43

какой у тебя SQL-то хоть??
в T-SQL (MS SQL Server) - CHARINDEX, PATINDEX
#2 
X-Freeday коренной житель20.09.07 11:11
NEW 20.09.07 11:11 
в ответ lubopitniy 19.09.07 22:43
Ну например вот так можно:
UPDATE mytable SET column2 = column1 WHERE PATINDEX('%'+CONVERT(varchar,column1)+'%',CONVERT(varchar,column2)) > 0;
╘ Краткость - сестра Таланта.
#3 
Murr коренной житель20.09.07 11:47
Murr
NEW 20.09.07 11:47 
в ответ lubopitniy 19.09.07 22:43
Эээ... грамотным решением, с точки зрения ДБА, будет добавление колонки с признаком и select & case.
А так - сомнительно, что нужны две колонки, но сказать что-то по приведенной инфе почти невозможно.
#4 
lubopitniy прохожий20.09.07 22:08
NEW 20.09.07 22:08 
в ответ X-Freeday 20.09.07 11:11
спасибо, но...попробовала! не получается!
у меня допустим дву колонки
и я хочу чтобы select выдавал мне когда в одной например написано "маша" а в другой "маша, витя, паша"
с помощью вашей команды не выходит
#5 
X-Freeday коренной житель21.09.07 10:44
NEW 21.09.07 10:44 
в ответ lubopitniy 20.09.07 22:08, Последний раз изменено 21.09.07 10:45 (X-Freeday)
Конечно не выходит, ведь задача была - хочу заменить и если вы разбираетесь в контексе как в таковом, то поняли бы для чего UPDATE...
Вот вам два примера:
SELECT column1,column2 FROM mytable WHERE PATINDEX('%'+CONVERT(varchar,column1)+'%',CONVERT(varchar,column2)) > 0;
или
SELECT (CASE WHEN PATINDEX('%'+CONVERT(varchar,column1)+'%',CONVERT(varchar,column2)) > 0 THEN column1 ELSE column2 END) AS mycolumn FROM mytable;
Надеюсь вы знаете, что название колонок и самой таблицы нужно заменить на свои и сделать выводы работы и сравнений через WHERE или CASE.
На будущее: для програмирования очень важна параметризация - если вы не параметризируете свои задачи, то и не ждите правильного ответа.
╘ Краткость - сестра Таланта.
#6 
lubopitniy прохожий23.09.07 09:30
NEW 23.09.07 09:30 
в ответ X-Freeday 21.09.07 10:44
спасибо все выщло проблема была жл этого из-зи типов данных
надо было их откорректироать
#7