2015-06-05 2 views
0

У меня есть существующая база данных с таблицей, которую мне нужно изменить. Из-за некоторых последних исправленных изменений мне нужно взять две колонки из таблицы и поместить данные из этих двух столбцов в существующий столбец в таблице. К счастью, все они типа Varchar, поэтому данные не нужно преобразовывать.Объедините два или более столбца в один в таблице

Вот что таблица выглядит сейчас: enter image description here

И вот что я хочу, чтобы это было:

enter image description here

Я не совсем уверен, где даже начать с этого. Итак, каков наилучший способ сделать это, не нарушая работу таблицы или не теряя данные?

ПРИМЕЧАНИЕ. Это НЕ для запроса. Я хочу изменить структуру самой таблицы, чтобы удалить эти два столбца, но взять их данные и выгрузить их в существующий столбец.

+1

Я должен спросить, почему? Первая таблица намного лучше, вы можете делать то, что когда-либо захотите с ней, с другой стороны, структура второй таблицы может вызвать у вас головную боль ... Я бы понял, если вы хотите сделать это в другом направлении ... GL! –

+0

@AleksandarMiladinovic Мне нужно объединить три значения, потому что они были объединены в форме, с которой связана эта таблица. Эти три столбца были просто для трех разных типов комментариев к форме, но теперь они объединили все комментарии в одно поле формы, поэтому гораздо проще объединить эти три столбца в один столбец на уровне базы данных для обеспечения согласованности. –

ответ

3

Это может быть сделано путем простого обновления заявление:

Update table 
Set colC = colC + char(13) + char(10) + colD +char(13) + char(10) + colE 

Обратите внимание, что char(13) + char(10) является разрыв строки.

После того, как вы подтвердили, что данные были скопированы, используйте таблицу alter для сброса colD и colE.

Вопрос Вы уверены, что этот ход является мудрым?

Этот шаг, похоже, противоречит основному правилу дизайна реляционных баз данных. Если в этих столбцах хранятся разные объекты данных, я бы настоятельно рекомендовал против такого перехода.
Если эти значения фактически не должны быть объединены в одно значение (на логическом уровне), то это неправильная работа.

+2

Я должен согласиться с Зоаром. Хотя этот прекрасный пример будет работать, вы разрушаете свою базу данных, нарушая 1NF. Не сохраняйте более одного значения на одном перекрестке таблицы. Какой беспорядок вы будете иметь, когда вам нужно обновить это или найти строки, которые имеют только 1 из этих других значений. –

+1

Разрывы строк Windows - это наоборот - 'char (13) + char (10)' -so, вероятно, это то, что я буду использовать. Различные программы будут интерпретировать 'char (10) + char (13)' по-разному. Тем не менее, +1 для «Вы уверены, что этот шаг мудр?» :) –

+0

Ничего себе, это было намного проще, чем я думал. Спасибо. Причина, по которой я объединяю три столбца в одну, состоит в том, что форма, с которой связана эта таблица, изменилась, и она объединила три разных поля в одно поле. И мне сказали сделать то же самое со таблицей в базе данных, чтобы сохранить значения из столбцов, которые должны быть удалены сейчас. Я мог бы технически сохранить два столбца и сделать все новые записи просто перейдите в один столбец, но я не вижу смысла в этом. –

Смежные вопросы