2012-05-23 2 views
0

У меня есть таблица Preference. В этой таблице находится столбец Section. Для каждой записи в таблице столбец Section будет иметь несколько значений, разделенных одним пробелом. Эти значения - это пути к операционной системе и/или настройки.Cast Заменить, когда исходная строка динамическая

Например `SELECT * FROM Preference» может вернуть что-то вроде этого:

HomeDrive=C:\Windows\ ExternalDrive=D:\ Server=\\server\file\

Вы заметите, что диски могут быть введены либо в виде буквы пути, или путь UNC. Жесткая часть состоит в том, что в этих записях могут быть настройки. Другой пример:

HomeDrive=C:\Windows\ UseHD=True ExternalDrive=D:\ Server=\\server\file\ FavoriteFolder=X

мне нужно, чтобы установить эти значения, независимо от того, что они с моим набором по умолчанию значений:

HomeDrive=\\myserver\home ExternalDrive=\\myserver\backup Server=\\myserver\public

Я также должен оставить все дополнительные настройки в этой записи были такими, какими они были, поэтому изменение всей записи на мои 3 набора путей не является возможным.

Я предположил бы, что я буду использовать что-то вроде этого:

UPDATE Preference 
SET Preference= CAST(REPLACE(CAST(Preference AS VARCHAR(MAX)), 'HomeDrive=\\?????\', 'HomeDrive=\\myserver\home') AS TEXT) 

Поскольку исходный путь диск является динамическим (Где мой «?????» в запросе), я не знаю, как выполнить. Только окончательная вещь о каждом пути является то, что:

  • Это будет либо буква диска или UNC
  • Дорожки всегда закончится в \
  • Он будет отделен от следующего значения с пространством

Однако, поскольку пути на диске могут иметь любое количество пробелов, я не уверен, помогает ли разделитель пространства.

Спасибо!

ответ

0

Я считаю, что корень проблемы заключается в том, как эти настройки сохраняются. Реляционная база данных разделяют различных частей данных со столбцами, поэтому каждый из этих параметров должен быть либо:

  • иметь свой собственный индивидуальный столбец
  • Появляется в другой таблице как Заводское Значение пару

Как эта информация попала в базу данных? Что еще более важно, можно ли его отделить до для вставки в Section?

Вы также можете проверить это split function для разделения значений.

+0

К сожалению, структура данных должна оставаться неизменной, и информация не может быть разделена перед вставкой. –

+0

@ DanielHoerst - В чем причины этого? –

+0

Потому что я пытаюсь автоматизировать задачу в базе данных, из которой я не могу контролировать схему. Справедливо? –

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