不确定是否可以使用SQL。可以使用任何类型的数据库服务器来测试它。
我有一个名为category的表,如下所示,
Gender | Age
-----------------
M | 25
M | 36
F | 22
M | 54
F | 28
F | 41
当我使用时,
SELECT GENDER * FROM CATEGORY
然后它给出了下面的输出,
Gender
M
M
F
M
F
F
我想知道当我们在不对现有表中的数据进行任何更改的情况下拉出列时,是否有办法对表中的数据进行任何类型的修改。
我想要下面这样的内容,
Gender
Male
Male
Female
Male
Female
Female
我不想更改表格中的数据。有没有办法,我可以在SELECT查询中添加一些东西来从我的表中获取上述细节?
答案 0 :(得分:1)
正如@GordonLinoff在评论中所说:
SELECT CASE WHEN Gender='M' THEN 'Male' WHEN Gender='F' THEN 'Female' END as Gender
FROM Category;
答案 1 :(得分:0)
select case Gender
when 'M' then 'Male'
when 'F' then 'Female'
else 'Other'
end as Gender
from Category
答案 2 :(得分:0)
CASE
表达式,如其他答案所示,是一个很好的解决方案。
更好的解决方案是在数据库中使用查找表并进行连接。像这样:
create table gender_codes ( gender_code, gender_name ) as
select 'M', 'Male' from dual union all
select 'F', 'Female' from dual
;
这会在您的数据库中创建一个非常小的表。
然后:
select gc.gender_name
from category c
join
gender_codes gc on c.gender = gc.gender_code
;
这可以用WITH子句模仿:
with gender_codes as (
select 'M' as gender_code, 'Male' as gender_name from dual union all
select 'F' , 'Female' from dual
)
select gc.gender_name
from category c
join
gender_codes gc on c.gender = gc.gender_code
;
但是这个解决方案与case
解决方案没什么不同。
小表的好处是每次编写新查询时都不必重新编写查找代码。它还避免了像'Femlae'
这样的意外拼写错误 - 如果以后你需要添加更多代码和更多性别,那么使用查找表会非常容易,并且与硬编码{{1 }}子句或WITH
表达式。
答案 3 :(得分:-1)
我们可以通过提供
来中断sql数据UPDATE tablename set colname = val where colname in (SELECT
condition)