Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL我可以使用正则表达式来表示行的类型吗?_Mysql_Sql_Regex - Fatal编程技术网

MySQL我可以使用正则表达式来表示行的类型吗?

MySQL我可以使用正则表达式来表示行的类型吗?,mysql,sql,regex,Mysql,Sql,Regex,我有一个带有列的“用户”表: USERNAME varchar(40) “用户”可以是管理用户,也可以是标准用户。管理用户始终包含纯数字用户名 然后,我可以使用regex提取所有具有数字名称的用户,以获取管理用户,反之亦然,以获取非管理用户 因此,在我的select查询中使用正则表达式来获取此信息是可以的做法,还是应该添加一个附加列: MANAGEMENT TINYINT(1) 它存储用户是否为管理用户 什么是最佳实践以及为什么?通常最好将模式设计为最佳实践。这包括没有存储相同信息的多个列。

我有一个带有列的“用户”表:

USERNAME varchar(40)
“用户”可以是管理用户,也可以是标准用户。管理用户始终包含纯数字用户名

然后,我可以使用regex提取所有具有数字名称的用户,以获取管理用户,反之亦然,以获取非管理用户

因此,在我的select查询中使用正则表达式来获取此信息是可以的做法,还是应该添加一个附加列:

MANAGEMENT TINYINT(1)
它存储用户是否为管理用户


什么是最佳实践以及为什么?

通常最好将模式设计为最佳实践。这包括没有存储相同信息的多个列。但是,用户名和作为管理用户绝对是不同的信息,您需要两者

您可以为新列使用
类型

如果您想要强制实施用户名的特定格式,标准数据库解决方案是定义一个检查约束,如下所示:

ALTER TABLE YourTable ADD CONSTRAINT YourConstraint CHECK ( is_management_user = 0 OR ...)
(其中,
将包括Oracle上的
REGEXP\u LIKE
,在TSQL中转换为整数或类似的内容)


但是,MySQL检查约束,如果你认为“代码”>用户名< /代码>的形式对于你的应用程序的安全性或操作来说是非常重要的,那么你必须使用触发器来模拟它们。这包括没有存储相同信息的多个列。但是,用户名和作为管理用户绝对是不同的信息,您需要两者

您可以为新列使用
类型

如果您想要强制实施用户名的特定格式,标准数据库解决方案是定义一个检查约束,如下所示:

ALTER TABLE YourTable ADD CONSTRAINT YourConstraint CHECK ( is_management_user = 0 OR ...)
(其中,
将包括Oracle上的
REGEXP\u LIKE
,在TSQL中转换为整数或类似的内容)

然而,MySQL检查约束,如果你认为“代码”>用户名< /代码>的形式对于你的应用程序的安全性或操作来说是非常重要的,那么你必须使用触发器来模拟它们。添加一个新字段。真正地没有合理的理由不这样做

我还建议您在上阅读这篇文章

一些例子:

9:人们的名字是用ASCII码写的

15:人名不包含数字

24:我的系统永远不需要处理来自中国的名字

25:还是日本

26:还是韩国

你的正则表达式能处理所有这些吗?当然可以每一次?

在一个领域里依靠这种“隐藏”的意义,确实不是很安全或有效。添加一个新字段。真正地没有合理的理由不这样做

我还建议您在上阅读这篇文章

一些例子:

9:人们的名字是用ASCII码写的

15:人名不包含数字

24:我的系统永远不需要处理来自中国的名字

25:还是日本

26:还是韩国


你的正则表达式能处理所有这些吗?当然可以每次?

在用户表中添加类似角色的内容。并在角色表中保留管理、标准等。在用户表中具有角色id。在用户表中添加类似角色的内容。并在角色表中保留管理、标准等。在用户表中具有角色id。