SQL查询枚举字段

SQL查询枚举字段,第1张

eminportent 在前台是个枚举选项,这里想显示汉字“VIP客户”的话,有2种方法:

用case when或if等条件语句。

case when aeminportent='' then “VIP客户” else “NOT VIP客户” end

新建表做连接(推荐),即新建表,保存枚举的所有对应值,用的时候join就可以了

(1)为什么要分层

作为一名数据的规划者,我们肯定希望自己的数据能够有秩序地流转,数据的整个生命周期能够清晰明确被设计者和使用者感知到。直观来讲就是如图这般层次清晰、依赖关系直观。

但是,大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。如下图,在不知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系。

因此,我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈到的数据分层。数据分层并不能解决所有的数据问题,但是,数据分层却可以给我们带来如下的好处:

1)清晰数据结构: 每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解;

2)减少重复开发: 规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;

3)统一数据口径: 通过数据分层,提供统一的数据出口,统一对外输出的数据口径;

4 )复杂问题简单化: 将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。

为了满足前面提到好处,通常将数据模型分为三层:数据运营层( ODS )、数据仓库层(DW)和数据应用层(APP)。简单来讲,我们可以理解为:ODS层存放的是接入的原始数据,DW层是存放我们要重点设计的数据仓库中间层数据,APP是面向业务定制的应用数据。下面详细介绍这三层的设计。

(2)数据模型的分层

1)源数据层(ODS)

此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。

2)数据仓库层(DW)

也称为细节层,DW 层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。

此层可以细分为三层:

明细层DWD(Data Warehouse Detail) :存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。

中间层DWM(Data WareHouse Middle) :存储中间数据,为数据统计需要创建的中间表数据,此数据一般是对多个维度的聚合数据,此层数据通常来源于DWD层的数据。

业务层DWS(Data WareHouse Service) :存储宽表数据,此层数据是针对某个业务领域的聚合数据,业务层的数据通常来源与此层,为什么叫宽表,主要是为了业务层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。

在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。

3)数据应用层(DA 或 APP)

前端应用直接读取的数据源;根据报表、专题分析的需求而计算生成的数据。

4)维表层(Dimension)

最后补充一个维表层,维表层主要包含两部分数据:

A)高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。

B)低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。

(3)问题扩展

数据仓库系统架构

上图系统各部分的执行流程是:

1)确定分析所依赖的源数据。

2)通过ETL将源数据采集到数据仓库。

3)数据按照数据仓库提供的主题结构进行存储。

4)根据各部门的业务分析要求创建数据集市(数据仓库的子集)。

5)决策分析、报表等应用系统从数据仓库查询数据、分析数据。

6)用户通过应用系统查询分析结果、报表。

(4)结合项目中使用

电商网站的数据体系设计,这里针对用户访问日志这一部分数据进行举例说明:

在ODS层中,由于各端的开发团队不同或者各种其它问题,用户的访问日志被分成了好几张表上报到了我们的ODS层。

为了方便大家的使用,我们在DWD层做了一张用户访问行为天表,在这里,我们将PC网页、H5、小程序和原生APP访问日志汇聚到一张表里面,统一字段名,提升数据质量,这样就有了一张可供大家方便使用的明细表了。

在DWM层,我们会从DWD层中选取业务关注的核心维度来做聚合 *** 作,比如只保留人、商品、设备和页面区域维度。类似的,我们这样做很多个DWM的中间表。

然后在DWS层,我们将一个人在整个网站中的行为数据放到一张表中,这就是我们的宽表了,有了这张表,就可以快速满足大部分的通用型业务需求了。

最后,在APP应用层,根据需求从DWS层的一张或者多张表取出数据拼接成一张应用表即可。

如果数值是尽可能连续的可以用一个数组存放对应的字符串 类似 char xxx[] = {"zero", "one", "two", "three",}; 如果不是写一个函数类似 char f(int x) { switch (x) { case 1: return "one"; case 5: return "five"; case 10: return "ten";

在SQL中,枚举值是指一组有限的值,它们可以用来查询数据库中的特定数据。例如,如果您想要查询某个国家的所有城市,您可以使用枚举值来查询该国家的所有城市。您可以使用SELECT语句来查询枚举值,该语句的语法如下:SELECT FROM table_name WHERE column_name IN (value1, value2, value3, );其中,table_name是您要查询的表名,column_name是您要查询的列名,value1、value2、value3等是您要查询的枚举值。例如,如果您想要查询某个国家的所有城市,您可以使用以下SELECT语句:SELECT FROM cities WHERE country IN ('China', 'India', 'USA');这样,您就可以查询到指定国家的所有城市。

1、记录类型

在实际应用中,变量往往是大量不同数据类型的数据组合也就是数据库例如一个最简单的人员档案记录,至少需要有 人员编号,姓名,出生日期,性别 等等

每一个人的记录都成组出现,不应该出现数据之间的交杂混乱

用户定义的数据类型就是用于处理上面的问题的

它可以把许多相同或者不同数据类型的变量放置在一起组成一个结构,这种结构也就是记录(Record)

在vb中定义用户自定义的数据类型,可以使用Type语句

格式如下:

Type vartype

variable1 As vartype

variable2 As vartype

variable3 As vartype

variablen As vartype

End Type

声明记录类型数据后,在应用程序中就可以定义具有这种数据类型的变量了定义改种数据类型的变量和一般变量的定义是一样的格式:

Dim VariableName As varType

例如,上面的人员结构可以声明为

Type MenRecord

ID As Integer

Name As String

birthday As Data

gender As Boolean

End Type

现在,就可以使用MenRecord 来声明变量:

dim z_men as menrecord

dim z_object as menrecord

然后就可以通过该变量来访问记录中的各个字段了访问的规则就是变量名加小数点加字段名 例如,要访问人员记录中的姓名,就可以使用

z_menName

从这个角度上来看,记录相当于对象,而字段相当于属性

2、枚举类型

所谓枚举变量,就是指用 Enum 类型定义的变量。变量和参数都可以定义为 Enum 类型。Enum 类型中的元素被初始化为 Enum 语句中指定的常数值。所赋给的值可以包括正数和负数,且在运行时不能改变。例如:

Enum SecurityLevel

IllegalEntry = -1

SecurityLevel1 = 0

SecurityLevel2 = 1

End Enum

Enum 语句只能在模块级别中出现。定义 Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定 Enum 类型。类模块中的 Public Enum 类型并不是该类的成员;只不过它们也被写入到类型库中。在标准模块中定义的 Enum 类型则不写到类型库中。具有相同名字的 Public Enum 类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同的类型库中有两个 Enum 类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。

不能在 With 块中使用 Enum 类型作为目标。

关于“我想输入一个1-7的整数,程序对应输出相对的星期几简写。” 这个需求不需要用枚举,比如搞个字符串数组:

#include <stdioh>

int main() {

    const char weekdayStrings[] = {"mon", "tue", "wed", "thu", "fri", "sat", "sun"};

    int weekdayNum = 0;

    printf("input weekday (1-7): ");

    scanf("%d", &weekdayNum);

    if (weekdayNum < 1 || weekdayNum > 7) {

        printf("wrong input\n");

        return -1;

    }

    printf("weekday: %s\n", weekdayStrings[weekdayNum-1]);

    return 0;

}

如果你想通过枚举值得到枚举名字,这个c语言做不到,只能用switch-case或者if-else判断,或者像我这样用字符串数组。

以上就是关于SQL查询枚举字段全部的内容,包括:SQL查询枚举字段、为什么要给数据库分层、ibatis 枚举 存到数据库是数字还是字符串等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10152159.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存