У меня есть таблица 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
- Дорожки всегда закончится в
\
- Он будет отделен от следующего значения с пространством
Однако, поскольку пути на диске могут иметь любое количество пробелов, я не уверен, помогает ли разделитель пространства.
Спасибо!
К сожалению, структура данных должна оставаться неизменной, и информация не может быть разделена перед вставкой. –
@ DanielHoerst - В чем причины этого? –
Потому что я пытаюсь автоматизировать задачу в базе данных, из которой я не могу контролировать схему. Справедливо? –