如何从选择查询中的数字中获取文本[重复]

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 - WHENIF 流控制运算符。

试试下面的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 ^^

以上是关于如何从选择查询中的数字中获取文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从警报中的 TextField 获取输入文本 [重复]

如何从python中的列表中获取最后一个数字[重复]

如何从php中的sql查询中获取字符串[重复]

如何从sqlalchemy中的查询中获取列表[重复]

如何在单击角度7中的按钮时获取下拉列表的选定值和选定文本[重复]

从Java中的int获取数字的特定数字[重复]