0

我有一张Preference桌子。该表中有一个Section列。对于表中的每个条目,该Section列将具有由单个空格分隔的多个值。这些值是操作系统路径和/或设置。

例如 `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
  • 路径总是以\
  • 它将与下一个值用空格隔开

但是,由于驱动器路径可以有任意数量的空格,我不确定空格分隔符是否有帮助。

谢谢!

4

1 回答 1

0

我相信问题的根源在于这些设置的存储方式。关系数据库将不同的数据与列分开,因此这些设置中的每一个都应该:

  • 有自己的独立专栏
  • 作为设置值对出现在另一个表中

这些信息是如何进入数据库的?更重要的是,它可以在插入之前Section分离出来吗?

您还可以查看此拆分函数来分隔值。

于 2012-05-23T16:41:38.547 回答