Как избежать подчеркивания в Postgresql
при поиске подчеркиваний в Postgresql буквальное использование символа _
не работает. Например, если вы хотите найти во всех таблицах столбцы, заканчивающиеся на _by
, для чего-то вроде журнала изменений или информации о деятельности, например updated_by
, reviewed_by
, etc. следующий запрос почти работает:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%_by'
он в основном полностью игнорирует подчеркивание и возвращается, как если бы вы искали LIKE '%by'
. Это не может быть проблемой во всех случаях, но она имеет потенциал быть одним из них. Как искать подчеркивания?
2 ответов
вы должны использовать обратную косую черту, чтобы избежать подчеркивания. Измените пример запроса на следующий:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\_by'
просто столкнулся с той же проблемой, и одна обратная косая черта не работала. Я нашел эту документацию в сообществе PostgreSQL, и она сработала:
правильный способ-избежать подчеркивания с обратной косой чертой. Вы на самом деле нужно написать две обратные косые черты в вашем запросе:
выбрать * из foo где бар, как "%\\_baz"
первый слеш котировки второй для разбора запросов, так то, что остается внутри система %\_baz, а затем подобное функция знает, что с этим делать.
поэтому используйте что-то вроде этого:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\_by'
Исходная Документация:https://www.postgresql.org/message-id/10965.962991238%40sss.pgh.pa.us