在列中将“ the”更改为“ The”

时间:2019-08-14 11:18:09

标签: sql sql-server-2008

我需要将数据库表的特定列中所有由'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”的地址。

1 个答案:

答案 0 :(得分:0)

我认为有效的代码是:

UPDATE addresses
    SET ADDRESSLINE1 = replace(ADDRESSLINE1, ' the ', ' The ');

如果是这样,我建议添加一个WHERE子句以加快查询速度:

UPDATE addresses
    SET ADDRESSLINE1 = replace(ADDRESSLINE1, ' the ', ' The ')
    WHERE ADDRESSLINE1 LIKE '% the %';

您没有指定数据库,但是某些数据库将更新所有行-包括记录更改后的值-即使值不变。