Sql server 如何在sql server中将性别区分为男性和女性,同时将性别的数据类型设置为INT
我想在数据库中将性别区分为男性和女性,我用于性别的数据类型是INTSql server 如何在sql server中将性别区分为男性和女性,同时将性别的数据类型设置为INT,sql-server,Sql Server,我想在数据库中将性别区分为男性和女性,我用于性别的数据类型是INT Gender ------ 1 2 像这样记录数据 Gender ------ Male Female 现在,我希望将此表单中的数据保存在存储过程中。使用CASE: CREATE TABLE Users( ID INT, Name NVARCHAR(45), Gender BIT ); INSERT INTO Users VALUES (1, N'User1', 1),
Gender
------
1
2
像这样记录数据
Gender
------
Male
Female
现在,我希望将此表单中的数据保存在存储过程中。使用CASE
:
CREATE TABLE Users(
ID INT,
Name NVARCHAR(45),
Gender BIT
);
INSERT INTO Users VALUES
(1, N'User1', 1),
(2, N'User2', 0);
SELECT *,
CASE Gender
WHEN 1 THEN 'Male'
WHEN 0 THEN 'Female'
ELSE
'Unknown' END
FROM Users;
结果:
+----+-------+--------+--------+
| ID | Name | Gender | Gender |
+----+-------+--------+--------+
| 1 | User1 | True | Male |
| 2 | User2 | False | Female |
+----+-------+--------+--------+
数据类型是一种整数数据类型,其值可以为
1
,0
,或NULL
,您可以对位列使用0或1
如果您提供一个类似于2的值,那么它将作为1存储在表列中
所以只使用0和1是很重要的
我用0表示女性数据,1表示男性数据
这是存储过程代码
create procedure PeopleByGender (
@gender bit -- 1 male, 0 female
)
as
if @gender is null
--select * from people
select * from people where gender is null
else
select * from people where gender = @gender
go
下面是如何按存储过程列出女性
exec PeopleByGender 0
这将起作用:
选择
IIF(性别为空,'其他',IIF(性别=1,'男性','女性'))性别
来自用户代码>我不明白问题是什么,你能再扩展一点吗?我真的希望你的双关语是有意的,@HoneyBadger:)你说你的数据是位,但是位不能存储值2
。(不可为空)位只能具有值0
和1
。您如何存储值2
?@Larnu很高兴有人捡到它;)@Larnu请原谅,数据类型是INT。@GuidoG Mybe列是非空的
@GuidoG好的,现在最好不要这样,如果列的性别是空的怎么办?在这种情况下,您的过程无法获取所有为nullHi GuidoG的内容,我修改了其中的存储过程。请查收。感谢您注意空选项,如果您将空作为参数传递,那么现在您将返回所有人。也许这是有意的,也许不是。我们不知道OP给了我们多少信息。在这种情况下,我会返回所有性别为null的人,也许我们可以将null情况下的IF子句更改如下:IF@gender is null select*from people where gender is null这与Sami最初的问题/假设相同。如果Gender
的值为NULL
(或不是1),则此人将始终为女性。考虑到OP将值2
存储在“bit
”数据类型中(2
不能存储在bit
),它们很可能具有除1
和2
之外的一系列值。