如何从选择查询中的数字中获取文本[重复]
Posted
技术标签:
【中文标题】如何从选择查询中的数字中获取文本[重复]【英文标题】:How to get text from a number in a select query [duplicate] 【发布时间】:2016-05-19 21:24:06 【问题描述】:我有mysql DB,它有一个ID INT,但是这个标识符在系统中有一个含义,我想得到含义而不是数字,例如这样的。
select ID from payments;
if(ID==0)
returns "No payment made"
else if(ID==1)
returns "Payment made accordingly"
有可能这样做吗?还是我应该以编程方式进行?在系统中?, 我在 C# 中使用 datagridview,这就是为什么我想将结果作为文本而不是查询中的数字来获取
【问题讨论】:
这里的最佳做法是在 UI 中保留“显示”。然后,如果您愿意,您可以进行本地化。数据和后端应该只使用该值。 谢谢@EhsanSajjad,不知道如何在论坛中实际搜索这个,非常感谢你的帖子:) 【参考方案1】:您可以使用CASE - WHEN
或IF
流控制运算符。
试试下面的SQL
,
select case ID when 0 then 'No payment made' when 1 then 'Payment made accordingly' end as ID
from payments
【讨论】:
谢谢你,因为某种原因答案在 cmets XD ^^【参考方案2】:您也可以像这样使用查询
Select IF(ID=0,"No payment made","Payment made accordingly") as ID From payments;
【讨论】:
【参考方案3】:最好的做法是
-
要么有一个查找表,以查找支付表中可能的 id 值,描述每个 id 值的含义,并通过连接获取此描述:
select p.id, pd.description from payments p inner join paym_description pd on p.id=p.payment_id
-
或者在客户端应用程序的资源文件中提供这些描述,客户端应用程序可以在其中查找值本身的含义。
原因是,如果您需要更改描述或添加新描述,则需要编辑代码,而不是配置表或资源文件(如果您在代码中包含描述)。更不用说,如果你有一个很大的列表,那将是一个很长的案例陈述。
【讨论】:
谢谢你,因为某种原因答案在 cmets XD ^^【参考方案4】:试试:
select case 1 when 0 then "No payment made" when 1 then "Payment made accordingly" end from payments
【讨论】:
谢谢你,答案在 cmets XD ^^以上是关于如何从选择查询中的数字中获取文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章