sql - 将列值从 'male' 替换为 'female' 并将 'female' 替换为 'male'

标签 sql oracle plsql oracle10g

我有一个表,性别,其中只有两个条目,“男性”和“女性”的行数只有这两个条目。现在我想编写一个程序来替换这两个值,输出应如下所示,

Input           Output

sex             sex
------------------------
male            female
female          male
female          male
male            female
我正在创建一个程序,这给了我一个错误。我正在使用游标来获取多行。我知道我们可以只使用一个更新语句来做到这一点,但我想像这样尝试。
declare
  v_gen gender%rowtype;
  cursor cur_gender is
    select * from gender;
begin
  open cur_gender;
  loop
    fetch cur_gender into v_gen;
    select * from gender;
    if v_gen='male'
    then
      update gender set sex='female';
    else
      update gender set sex='male';
    end if;
    exit when v_gen%notfound;
  end loop;
  close cur_gender;
end;

最佳答案

update Table1 set "col" = (case "col" when 'male' then 'female'
else 'male' end);

fiddle

关于sql - 将列值从 'male' 替换为 'female' 并将 'female' 替换为 'male',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17968933/

相关文章:

MySQL静态表的最佳索引

mysql - 如何从一个表中选择一列并从另一个表中选择另一列

oracle - 是否有相当于 mysqldump 的 Oracle

c - 如何调用Oracle的olog()?

oracle - 推荐一本关于 "expressive"PL/SQL 的书吗?

oracle - 如何使用记录循环引用游标?

mysql - 从 SQL 中的每一天获取具有特定列的最后一行

mysql - 从与其他表有关系的表中删除查询

c# - IUserType 与 ODP.net 对应的 Int64

sql - PL/SQL-更新员工薪资,加薪金额错误