我试图替换一个列中的整个值(pet)。值“dog”在同一列中重复了85次。如果我想用“cat”替换它,我该怎么做,但只是在一个列中(pet)?我试过...
pet
SELECT pet REPLACE(pet, ‘dog’, ‘cat’) FROM Animals
错误信息
yvfmudvl1#
SQL中的REPLACE()将替换字符串列值中特定子字符串的所有示例。但在SELECT中使用时,它只影响该查询的输出,不会更新源表。以下应返回所有宠物,第二列中的 dogs 应为 cats:
REPLACE()
SELECT
SELECT pet, REPLACE(pet, ‘dog’, ‘cat’) as newPet FROM Animals
但是REPLACE()实际上是为替换更长字符串中的“dog”而设计的,例如将thequickbrownfoxjumpsoverthelazydog更改为thequickbrownfoxjumpsoverthelazycat它仍然适用于您的简单场景,但它会将dogfish更改为catfish,这可能不合适。执行条件替换的另一种方法是使用CASE
thequickbrownfoxjumpsoverthelazydog
thequickbrownfoxjumpsoverthelazycat
dogfish
catfish
CASE
SELECT pet , CASE pet WHEN ‘dog’ THEN ‘cat’ ELSE pet END as newPet FROM Animals
在这些示例中,替换列显示为单独的列,只是为了与源列并排演示输出,但您可以使用列 alias 返回计算列 * 而不是 * pet
SELECT CASE pet WHEN ‘dog’ THEN ‘cat’ ELSE pet END as pet FROM Animals
如果要永久更新源表中的值,请将这两个选项之一与UPDATE语句结合使用,最简单的形式如下
UPDATE
UPDATE Animals SET pet = 'cat' WHERE pet = 'dog'
1条答案
按热度按时间yvfmudvl1#
SQL中的
REPLACE()
将替换字符串列值中特定子字符串的所有示例。但在SELECT
中使用时,它只影响该查询的输出,不会更新源表。以下应返回所有宠物,第二列中的 dogs 应为 cats:
但是
REPLACE()
实际上是为替换更长字符串中的“dog”而设计的,例如将thequickbrownfoxjumpsoverthelazydog
更改为thequickbrownfoxjumpsoverthelazycat
它仍然适用于您的简单场景,但它会将
dogfish
更改为catfish
,这可能不合适。执行条件替换的另一种方法是使用
CASE
在这些示例中,替换列显示为单独的列,只是为了与源列并排演示输出,但您可以使用列 alias 返回计算列 * 而不是 *
pet
如果要永久更新源表中的值,请将这两个选项之一与
UPDATE
语句结合使用,最简单的形式如下