SQL, как сделать замену строки для любых данных запроса SQL, которые выходят из столбца без использования SQL

0

У меня есть стол со столбцом для разных имен фруктов - Apple, Orange, Banana и т.д. Эти названия фруктов могут иметь дубликаты.

Прямо сейчас, если я делаю SQL Select, я получаю имена как есть. Я хочу изменить данные, чтобы каждое "Яблоко" было заменено "Сладким яблоком", и каждый "Оранжевый" заменяется "Мандарином".

Я знаю, что могу использовать функцию replace в моих SQL-запросах. Однако я не хочу/не могу изменять свои SQL-запросы. Я пытался оставить изменение SQL как последнее средство, потому что это нужно делать на нескольких скриптах nodejs.

Мне интересно, есть ли какой-то способ в самой базе данных, которая может заставить его автоматически возвращать эти измененные данные. Как фильтр/конвейер/ограничение (я не уверен, что ему называть), который задан в конкретном столбце таблицы и автоматически выполняет эту функцию замены для любых данных, которые запрашиваются из этой таблицы.

Я бы хотел получить ответ в основном Postgres и MySQL и, если возможно, для SQL Server.

  • 0
    @squillman на данный момент это Postgres, но у меня также есть тот же вопрос для других баз данных. Это должен быть отдельный вопрос? Я отредактировал вопрос с указанием требований к моей базе данных. Извините, если я все испортил.
  • 0
    Да, это должны быть отдельные вопросы, поскольку в каждой СУБД часто встречаются разные реализации / синтаксисы.
Показать ещё 4 комментария
Теги:
sql-server
replace

3 ответа

0

У него есть свои недостатки, но вы можете это сделать:

Измените имя столбца Fruit на что-то еще, а затем создайте новый столбец Computed, который делает REPLACE, который вы хотите, в недавно переименованном столбце Fruit, и присвойте этому новому столбцу имя старого столбца, чтобы все ваши существующие запросы попадет в новый столбец.

Недостатком является то, что любые существующие запросы INSERT/UPDATE должны быть изменены на INSERT/UPDATE на новое имя старого столбца.

0

Ну, идея базы данных - это "сохранение значений". Итак, если вы запрашиваете эти значения, у вас есть только небольшие варианты модификации.

Ваше ожидание обработки явно зависит от вашего языка программирования. Всякий раз, когда вы выводите значение, полученное из базы данных, оберните его, отфильтруйте его - верните все, что вам нужно, вместо хранимого значения, то есть:

public static string filter(value){
  if (value == "Apple")
     return "Sweet Apple";
  if (value == "Orange")
     return "Mandarine";

  return value;
}
0

Нет, ближайшими были бы триггеры Insert и Update для замены данных по мере их поступления, но вы не можете переопределять данные, которые запрашиваются, не указав их в запросе. Вы можете создать представление, которое будет отображать замененные строки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню