Sql 初始字符串为动态字符串时强制转换替换
我有一个Sql 初始字符串为动态字符串时强制转换替换,sql,sql-server-2008,Sql,Sql Server 2008,我有一个首选项表。该表中有一个部分列。对于表中的每个条目,部分列将有多个值,用一个空格分隔。这些值是操作系统路径和/或设置 例如,“SELECT*FROM Preference”可以返回如下内容: UPDATE Preference SET Preference= CAST(REPLACE(CAST(Preference AS VARCHAR(MAX)), 'HomeDrive=\\?????\', 'HomeDrive=\\myserver\home') AS TEXT) HomeDrive
首选项
表。该表中有一个部分
列。对于表中的每个条目,部分
列将有多个值,用一个空格分隔。这些值是操作系统路径和/或设置
例如,“SELECT*FROM Preference”可以返回如下内容:
UPDATE Preference
SET Preference= CAST(REPLACE(CAST(Preference AS VARCHAR(MAX)), 'HomeDrive=\\?????\', 'HomeDrive=\\myserver\home') AS TEXT)
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
- 路径将始终以
\
- 它将与下一个值用空格分隔
谢谢 我认为问题的根源在于这些设置的存储方式。关系数据库用列分隔不同的数据段,因此每个设置应:
- 有自己的独立栏目
- 在另一个表中显示为设置值对
部分之前,是否可以将其分离出来
您也可以检查此选项以分离值。不幸的是,数据结构必须保持不变,并且在插入之前不能分离信息。@Danielhoert-这是什么原因?因为我试图在数据库上自动执行任务,而我无法控制其架构。够公平吗?那样的话,我想你应该使用分割函数。详情请参阅。尽管您可能希望在设置中添加特殊字符,以便间隔符不再是问题。