如何把表中的性别字段(bit类型)1,0更换成男,女?

zhang_wei_sheng 2007-10-30 12:14:26
有一表stuInfo 其中有个字段stuSex 是bit类型
插入数据
intert into stuInfo(..,..,stuSex,...)values(..,..,1,..)

select 在表中显示为1或者0
现求SQL语句把表中的字段stuSex的1,0值转化成男,女
要求即使在插入数据1或者0,select后能显示出男,女
最好用case....end语句实现

我看了一下很多人的同样问题
很多人回答用:
select stuSex =case stuSex
when '1' then '男'
else '女'
end
from stuInfo
这样输出结果并不能把表中的值改为男,女
在线等完整答案...............
...全文
2734 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
hui_hui_2007 2007-11-11
  • 打赏
  • 举报
回复
在客户端将1,0转成,男女不是更好吗?
这种情况直接存男女的字符是不好的设计.
存贮0,1是好的设计思路吧.
pt1314917 2007-11-11
  • 打赏
  • 举报
回复
楼上说了很多了```
数据库中字段类型是bit,又怎么可能将它直接修改成‘男’或‘女’呢?
你这是把一个bit类型的字段强制性的赋一个字符型的值。。当然不行。。。
背锅大侠 2007-11-11
  • 打赏
  • 举报
回复
为什么不能实现在数据库里怎么修改呢
ltmltm123456 2007-11-04
  • 打赏
  • 举报
回复
case stuSex when '1' then '男' else '女' end as stuSex1
underlemontree 2007-11-02
  • 打赏
  • 举报
回复
create table stuSex(id nvarchar(10))
insert stuSex select 1
insert stuSex select 0

select * from stusex

create function stu(@id int)
returns varchar(10)
as
begin
declare @b varchar(10)
if @id=1
begin
set @b='男'
end
else
begin
set @b='女'
end
return @b
end
go

insert into stusex values(dbo.stu(1))
insert into stusex values(dbo.stu(0))
select * from stusex

dracularking 2007-10-31
  • 打赏
  • 举报
回复
mark 学习
zhujinqiang 2007-10-31
  • 打赏
  • 举报
回复
支持15楼 alter table stuinfo先
raojl 2007-10-31
  • 打赏
  • 举报
回复
15楼的才是对的!
西安风影 2007-10-31
  • 打赏
  • 举报
回复
支持LS
love_cutezhou 2007-10-31
  • 打赏
  • 举报
回复
15楼正解
brucenan999 2007-10-31
  • 打赏
  • 举报
回复
在传给之前就把这个转换好啊.
fcuandy 2007-10-30
  • 打赏
  • 举报
回复
如果是插入时就要将1,0改为男,女,那么不要用 insert into ... values(...)这种写法,
改用
insert stuinfo(字段,....,stuSex)
select 字段值,...,case when '1' then '男' else '女' end

还有种投机的写法是
insert stuinfo(字段,....,stuSex)
select 字段值,...,substring('女男',值+1,1)


或者在前台程序中处理将1变男,0变女的操作.

看楼主的要求,是然望update表,将1变男,0变女,其实做法跟select一样,只是换成update操作就是了.
update stuinfo set stuSex=case when stuSex when '1' then '男' when '0' then '女' else stuSex end
当然,这里也可以用投机的写法.
zhang_wei_sheng 2007-10-30
  • 打赏
  • 举报
回复
你这样用内连接也可以实现
但比较麻烦点
那么能不能直接在插入数据的时候控制0,1转换成男 女呢
比如这样
insert into stuInfo(..,..,stuSex=case when '1 ' then '男 ' else '女 ' end )
values(..,..,1,..)

但我这样有语法错误 但这个方法是可以实现的
Limpire 2007-10-30
  • 打赏
  • 举报
回复
create table stuSex(id tinyint,stuSex nvarchar(1))
insert stuSex select 1,'男'
insert stuSex select 0,'女'

select ...,b.stuSex,... from stuInfo a inner join stuSex b on a.stuSex=b.id
zhang_wei_sheng 2007-10-30
  • 打赏
  • 举报
回复
如果我想在插入数据的时候实现这个功能又改怎么写?
insert into stuInfo(..,..,stuSex=case when '1' then '男' else '女' end )
values(..,..,1,..)
这样写回有语法错误 应该怎么写??
fcuandy 2007-10-30
  • 打赏
  • 举报
回复
我写的有问题,敲错了.

update stuinfo set stuSex=case stuSex when '1 ' then '男 ' when '0 ' then '女 ' else stuSex end
或者

update stuinfo set stuSex=case when stuSex='1 ' then '男 ' when stusex='0 ' then '女 ' else stuSex end
另外你的stuSex字段需要是varchar类型.
lmdeo 2007-10-30
  • 打赏
  • 举报
回复
我觉得楼主说的问题应该放在应用程序中来完成,不应该交给数据库完成!
网淘那些事 2007-10-30
  • 打赏
  • 举报
回复
和楼上的有同感,也不知道是水平太低还是楼主没有表示清楚,反正觉得没有意义.
HonorCheung 2007-10-30
  • 打赏
  • 举报
回复
有一表stuInfo 其中有个字段stuSex 是bit类型

现求SQL语句把表中的字段stuSex的1,0值转化成男,女
要求即使在插入数据1或者0,select后能显示出男,女
最好用case....end语句实现

我看了一下很多人的同样问题
很多人回答用:
select stuSex =case stuSex
when '1 ' then '男 '
else '女 '
end
from stuInfo
这样输出结果并不能把表中的值改为男,女

既然是Bit,怎么能存入'男','女'
baihecheng 2007-10-30
  • 打赏
  • 举报
回复

begin transaction
alter table stuinfo alter column stuSex char(2)
go
update stuinfo set sex=case stuSex when '1' then '男' when '0' then '女' end
go

alter table stuinfo add constraint ct_sex check(stuSex in('男' ,'女'))
go
if @@error<>0
rollback
else
commit
加载更多回复(6)

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧