gpt4 book ai didi

c# - 如何使用 SQL 显示字符串枚举值而不是数字值

转载 作者:行者123 更新时间:2023-11-30 14:27:27 24 4
gpt4 key购买 nike

我正在尝试显示具有status Dispatched 的所有交付列表。但是,它只返回 statusnumber value,而不是实际的 string value。我认为这是因为我使用了 Enum 来存储我的状态值

我希望显示单词 Dispatched 而不是它在 Enum 中代表的 number value

我在 ASP.Net MVC 中开发,我在 VS2013 中使用query builder

我不确定如何解决这个问题,任何人都可以建议一个使用 SQL 的易于理解的解决方案。

如果需要任何额外的代码,请告诉我,在此先感谢您!

这是我想要的查询,但它不起作用:

SELECT Delivery.[Status], 
COUNT(Delivery.DeliveryID) AS Dispatched_Status
FROM Delivery
WHERE Delivery.[Status] = 'Dispatched'
GROUP BY Delivery.[Status];

这是有效但返回数字值的查询。我这样尝试是因为 Enum 将字符串值存储为数字:

SELECT Delivery.[Status], 
COUNT(Delivery.DeliveryID) AS Dispatched_Status
FROM Delivery
WHERE Delivery.[Status] = '1'
GROUP BY Delivery.[Status];

P.S 我知道 status 是一个保留字 - 将来会遵循正确的命名约定。

交付表定义

enter image description here

最佳答案

听起来您只需要在数据库中添加一个查找表。有点像

CREATE TABLE [dbo].[StatusLookup](
[StatusID] [int] NOT NULL,
[StatusName] [varchar](64) NOT NULL,
[StatusDescription] [varchar](max),
)

INSERT INTO [dbo].[StatusLookup]([StatusID],[StatusName],[StatusDescription]
VALUES(1, 'Dispatched', 'A dispatched record')
...

请注意,您必须手动执行此操作并确保使用与您的枚举匹配的值填充它。

那么你的查询就是

SELECT StatusLookup.[StatusName], 
COUNT(Delivery.DeliveryID) AS Dispatched_Status
FROM Delivery
JOIN StatusLookup ON Delivery.Status = StatusLookup.StatusID
WHERE StatusLookup.[StatusName] = 'Dispatched'
GROUP BY StatusLookup.[StatusName];

关于c# - 如何使用 SQL 显示字符串枚举值而不是数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32785886/

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