我的mysql表中有两个枚举列:
gender enum('male', 'female') not null,
user_type enum('hr', 'manager', 'qa') not null我的一位同事坚持认为,在所有枚举值中使用小写不是一个好主意,因为在页面中它看起来不太好。例如,
// profile.php
用户类型:人力资源(代表人力资源)
Gender: male应:
// profile.php
用户类型: HR
性别:男性
忽略大小写的主要原因是我会多次比较这些列上的值。例如:
if (user_type == "hr")这将是非常恼人的,如果我有错误只是因为情况错配。那性别专栏呢?上面的情况真的很好吗?
我认为UI端可以将其大写如下:
<?php echo strtoupper($userType) ?>我对sql不太熟悉,所以我想问一问:是否有关于枚举值的大小写约定的最佳实践?注意,我说的不是命名枚举列。
发布于 2017-09-24 10:44:06
如果您询问的是最佳实践,那么是。您应该在大写中使用ENUM值。因为它们是常量。
和,AFAIK,在所有编程语言中,常量声明为大写。
发布于 2017-09-24 12:11:29
根据我的经验,在我使用的所有语言中,无论是在文档中还是在语言所提供的库中定义的枚举中,枚举都不是用大写或小写写成的,而是使用了骆驼大小写的一些变体,比如Small, Medium, Big或szSmall, szMedium, szBig。下面是一些例子:
当然,在所有这些示例中,枚举值不是字符串,它们有一个名称和一个值,因此您在比较和输出方面没有问题(因为您将输出它的值,而不是它的名称)。
因为在MySQL中,值也是名称,如果您对任何输出使用枚举的值,则应该使用在该输出中更有意义的情况(如果该列是常规的CHAR列,则使用相同的情况),例如'HR','Management','QA'。正如注释中所指出的,默认排序规则应该已经不区分大小写,因此在比较或联接方面没有问题。
在PHP中,您可以使用strcasecmp(),或者如果出于任何原因不喜欢它,则可以使用strtolower()/strtoupper()。
if (strcasecmp(user_type,"hr")==0) // best options IMO
if (strcasecmp(user_type,"HR")==0) // best options IMO
if (strtolower(user_type)=="hr")
if (strtoupper(user_type)=="HR")这并不是说我反对使用一致的大小写,事实上,我总是使用它,在不需要大小写的情况下,我花了很多时间处理不区分大小写的语言。但最重要的是,该程序提供了所需的结果,因为您编写代码不仅仅是为了好玩,而是为了达到目的,如果命名部门的正确方法是'HR','Management','QA',您不能使用'hr','management','qa',因为它在代码中看起来更漂亮。
也就是说,如果枚举仅在内部使用,例如,因为您只将它们用作id,并且描述存储在Descriptions表中,则使用最适合您和同事的情况。
https://stackoverflow.com/questions/46388798
复制相似问题