我需要将数据库表的特定列中所有由'the'更改为'The'的事件。我只需要更改单词“ the”,而不是更改所有出现字母“ the”的地方(例如单词“ therethe”)。为了说明这一点,我有很多地址,例如桌子上的柳树,大房子,史密斯农场。在此示例中,最后两个出现的“ the”需要更改为“ The”。
我尝试了各种SQL脚本,我知道其中一种有效(我已经在少量数据上进行了尝试)。该脚本如下所示。但是,当我在完整的测试数据库上运行脚本时,它将花费很多时间才能运行并降低了整个服务器的速度。
因此,我试图找到一个脚本,该脚本提取出所有以小写字母显示的地址,然后可以使用正在运行的SQL来更改这些记录。下面显示了尝试编写这种脚本的尝试,但对我来说似乎不起作用。
任何帮助将不胜感激,谢谢!
工作代码(永远需要的代码)是:
SET ADDRESSLINE1 = replace(ADDRESSLINE1, ' the ', ' The ')
我尝试使用此代码仅提取带有'the'的记录,但这根本不产生任何记录:
SELECT * FROM contact WHERE addressline1 COLLATE
SQL_Latin1_General_CP1_CI_AS LIKE ' the '
我希望上面显示的第二个脚本会提取出所有带有“ the”而不是“ The”的地址。
答案 0 :(得分:0)
我认为有效的代码是:
UPDATE addresses
SET ADDRESSLINE1 = replace(ADDRESSLINE1, ' the ', ' The ');
如果是这样,我建议添加一个WHERE
子句以加快查询速度:
UPDATE addresses
SET ADDRESSLINE1 = replace(ADDRESSLINE1, ' the ', ' The ')
WHERE ADDRESSLINE1 LIKE '% the %';
您没有指定数据库,但是某些数据库将更新所有行-包括记录更改后的值-即使值不变。