我有一个配置表,其中存储了应用程序URL。应用程序在各种服务器上,每当我们需要设置新服务器时,我们需要通过在sql中选择并运行while循环来更新值。 Scenerios就像
表:配置 值
Id | key | DefaultUrl
1 | Key1 | www.xxx.com/something1
2 | key2 | www.xxx.com/something2
3 | key3 | www.xxx.com/something3
此模式上还有许多键,还有一些其他表。由于这是传统软件,我无法改变结构。
每当我需要设置新服务器时,我需要将网址部分从www.xxx.com
替换为www.yyy.com
。为了达到这个目的,我做了类似
所以现在我正在寻找一种更好的方法来实现同样的目标。请帮忙!
答案 0 :(得分:1)
唯一可能的问题是当www.xxx.com
位于网址中间的某个位置时,它不应该被替换。例如,在网址字符' '
中使用一些禁止使用的内容。
UPDATE [Configuration Values]
SET DefaultUrl = replace(' '+DefaultUrl, ' www.xxx.com', 'www.yyy.com')
WHERE DefaultUrl LIKE 'www.xxx.com%'
答案 1 :(得分:0)
您可以使用替换功能。试试这样,
DECLARE @Table TABLE (
id INT
,[key] VARCHAR(10)
,DefaultUrl VARCHAR(100)
)
INSERT INTO @Table
VALUES (
1
,'Key1'
,'www.xxx.com/something1'
)
,(
2
,'key2'
,'www.xxx.com/something2'
)
,(
3
,'key3'
,'www.xxx.com/something3'
)
SELECT replace(DefaultUrl, 'www.xxx.com', 'www.yyy.com')
FROM @Table
UPDATE @Table
SET DefaultUrl = replace(DefaultUrl, 'www.xxx.com', 'www.yyy.com')
where .....
答案 2 :(得分:0)
我怀疑你想要这样的东西:
insert into configuration (key, defaulturl, . . . )
select key, replace(defaulturl, 'www.xxx.com', 'www.yyy.com')
from configuration
where defaulturl like '%www.xxx.com%';
这将在配置表中为yyy复制xxx的键值。