Это найдет первое вхождение, которое соответствует одному из значений в списке, приведенном в вопросе.
select
Column1,
Column2,
Column3,
regexp_substr(Column1, 'CDE|ACE|GATE|HUB') AS NewColumn
from
your_table;
РЕДАКТИРОВАТЬ: Для размещения @TimBiegeleisen
select
Column1,
Column2,
Column3,
regexp_substr(
Column1,
(SELECT LIST_AGG(item, '|') FROM table_of_codes)
) AS NewColumn
from
your_table;
Или ...
select
your_table.Column1,
your_table.Column2,
your_table.Column3,
table_of_codes.item
from
your_table
inner join
table_of_codes
on yourTable.col3 LIKE '%' + table_of_codes.item + '%'
;
Или много таких вариаций.
(где таблица table_of_codes
содержит одну строку на код, который вы ищете.)
Я считал эти два пути, но я не на 100% уверен который:
And
вместо Or
.Я верю тому, что они пытаются изобразить, здесь то, если Ваше приложение уязвимо для Внедрения SQL.
Символ (124) переводит в | символ, который вынуждает целый результат запроса рассматриваться как результат запроса с двумя присоединенными каналами. Таким образом, Вы заканчиваете с количеством таблиц в Вашей базе данных с двумя присоединенными каналами (напр. |1428 |). Который по сравнению с 0 в> 0 причин ошибка, потому что |1428 | не интервал.
Таким образом, если Ваше приложение открыто для Внедрения SQL, они теперь знают это (потому что допустимое значение параметра заставило приложение допускать ошибку). Они могли бы также знать, что у Вас есть плохая обработка ошибок если они ошибочные пузыри базы данных SQL до вершины. Если у Вас действительно есть плохая обработка ошибок, они также знают, сколько таблиц Вы имеете (не уверенный, что хороший, который делает их, но чем больше информации, тем лучше).
Много попыток Внедрения SQL действительно предназначено, чтобы заставить Ваше приложение перестать работать, чтобы знать, что Вы уязвимы. Если Вы действительно обрабатываете ошибки хорошо, они могут затем попытаться ослепить SQL, вводят Вас.
Проверьте это для наблюдения этого подробно.
Я надеюсь, что Вы не уязвимы, и если Вы удачи!
Буквально вчера я написал perl-скрипт, чтобы сделать именно это. Сценарий возвращает список модулей Perl, установленных в @INC, используя символ '::' в качестве разделителя. Вызовите сценарий, используя -
perl perlmod.pl
ИЛИ
perl perlmod.pl <module name> #Case-insensitive(eg. perl perlmod.pl ftp)
. На данный момент сценарий пропускает текущий каталог ('.'), Так как у меня были проблемы с рекурсивными софт-ссылками, но вы можете включить его, изменив функцию grep в строке 17 с
grep { $_ !~ '^\.$' } @INC
to just,
@INC
Скрипт можно найти здесь. Вы можете скачать его здесь :