Login
Чем заменить функцию instr в SQL
117
NEW 19.09.07 22:43
У меня есть две колонки в таблице
в них содержатся строки
если содержание одной колонки содержится в другой то я хочу заменить ее содержание
как это сделать если в SQL нету функции inStr?
Спасибо за ответ!!
в них содержатся строки
если содержание одной колонки содержится в другой то я хочу заменить ее содержание
как это сделать если в SQL нету функции inStr?
Спасибо за ответ!!
NEW 19.09.07 22:50
in Antwort lubopitniy 19.09.07 22:43
20.09.07 11:11
in Antwort lubopitniy 19.09.07 22:43
Ну например вот так можно:
UPDATE mytable SET column2 = column1 WHERE PATINDEX('%'+CONVERT(varchar,column1)+'%',CONVERT(varchar,column2)) > 0;
UPDATE mytable SET column2 = column1 WHERE PATINDEX('%'+CONVERT(varchar,column1)+'%',CONVERT(varchar,column2)) > 0;
[зел]╘ Краткость - сестра Таланта.[/зел]
NEW 20.09.07 11:47
in Antwort lubopitniy 19.09.07 22:43
Эээ... грамотным решением, с точки зрения ДБА, будет добавление колонки с признаком и select & case.
А так - сомнительно, что нужны две колонки, но сказать что-то по приведенной инфе почти невозможно.
А так - сомнительно, что нужны две колонки, но сказать что-то по приведенной инфе почти невозможно.
NEW 20.09.07 22:08
in Antwort X-Freeday 20.09.07 11:11
спасибо, но...попробовала! не получается!
у меня допустим дву колонки
и я хочу чтобы select выдавал мне когда в одной например написано "маша" а в другой "маша, витя, паша"
с помощью вашей команды не выходит
у меня допустим дву колонки
и я хочу чтобы select выдавал мне когда в одной например написано "маша" а в другой "маша, витя, паша"
с помощью вашей команды не выходит
NEW 21.09.07 10:44
in Antwort lubopitniy 20.09.07 22:08, Zuletzt geändert 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.
На будущее: для програмирования очень важна параметризация - если вы не параметризируете свои задачи, то и не ждите правильного ответа.
Вот вам два примера:
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.
На будущее: для програмирования очень важна параметризация - если вы не параметризируете свои задачи, то и не ждите правильного ответа.
[зел]╘ Краткость - сестра Таланта.[/зел]
NEW 23.09.07 09:30
in Antwort X-Freeday 21.09.07 10:44