gpt4 book ai didi

sql-server - 我可以在 Sql Server 中使用自定义枚举数据类型吗?

转载 作者:行者123 更新时间:2023-12-04 04:24:53 24 4
gpt4 key购买 nike

在我的 sql 代码中,我传递了一堆神奇的数字:-

AnimalType TINYINT

/*
AnimalType can be one of the following :-
1. Cat
2. Dog
3. Bird
....
*/
无论如何我可以使它成为自定义类型/枚举。
例如。
AnimalType ANIMAL
并且它被限制为包含 1 <-> 之间的数字(例如,在我上面的示例中为 3)。
或受限于字符串。例如。 AnimalType = 'Cat' .. 等?
干杯!
编辑
我知道查找表是什么。这不是针对查找表,而是针对传递给多个存储过程的某些数据。我希望传入一个枚举或至少一些受限制的数字(例如数字 1<->5),而不是传入 Magic Numbers,等等......

最佳答案

没有枚举类型。但是,您可以创建用户定义的函数来在映射到枚举值的 INT 之间来回转换。

要为基于“INT”的 AnimalType 生成友好名称,您可以执行以下操作:

生成友好名称的 UDF:

CREATE FUNCTION ihAnimalTypeDesc
(
@AnimalType INT
)

RETURNS VARCHAR(20)
AS
BEGIN
IF @AnimalType IS NULL
RETURN NULL

DECLARE @Temp AS VARCHAR(20)

SET @Temp = CASE @AnimalType
WHEN 1 THEN 'Cat'
WHEN 2 THEN 'Dog'
WHEN 3 THEN 'Snake'
END

RETURN @Temp
END

一个 SELECT语句可以像这样使用 UDF:
SELECT A.AnimalName, dbo.ihAnimalTypeDesc(A.AnimalType)
FROM Animals A

如果动物属于特定类型,这是一个返回 true 或 false 的 UDF:
CREATE FUNCTION IsCat
(
@AnimalType INT
)

RETURNS BIT
AS
BEGIN
IF @AnimalType IS NULL
RETURN NULL

IF @AnimalType = 1
RETURN 1

RETURN 0
END

这是使用上述 UDF 的示例。注意:在 WHERE 中执行此操作时,您必须小心性能问题。条款。:
SELECT AnimalName
FROM Animals
WHERE dbo.IsCat(AnimalType)

关于sql-server - 我可以在 Sql Server 中使用自定义枚举数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/919971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com