专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

FlinkSQL知其所以然(八)SQL数据类型大全

  在介绍完一些基本概念之后,我们来认识一下,FlinkSQL中的数据类型。
  FlinkSQL内置了很多常见的数据类型,并且也为用户提供了自定义数据类型的能力。
  总共包含3部分:原子数据类型复合数据类型用户自定义数据类型1。原子数据类型
  字符串类型:CHAR、CHAR(n):定长字符串,就和Java中的Char一样,n代表字符的定长,取值范围〔1,2,147,483,647〕。如果不指定n,则默认为1。VARCHAR、VARCHAR(n)、STRING:可变长字符串,就和Java中的String一样,n代表字符的最大长度,取值范围〔1,2,147,483,647〕。如果不指定n,则默认为1。STRING等同于VARCHAR(2147483647)。
  二进制字符串类型:BINARY、BINARY(n):定长二进制字符串,n代表定长,取值范围〔1,2,147,483,647〕。如果不指定n,则默认为1。VARBINARY、VARBINARY(n)、BYTES:可变长二进制字符串,n代表字符的最大长度,取值范围〔1,2,147,483,647〕。如果不指定n,则默认为1。BYTES等同于VARBINARY(2147483647)。
  精确数值类型:DECIMAL、DECIMAL(p)、DECIMAL(p,s)、DEC、DEC(p)、DEC(p,s)、NUMERIC、NUMERIC(p)、NUMERIC(p,s):固定长度和精度的数值类型,就和Java中的BigDecimal一样,p代表数值位数(长度),取值范围〔1,38〕;s代表小数点后的位数(精度),取值范围〔0,p〕。如果不指定,p默认为10,s默认为0。TINYINT:128到127的1字节大小的有符号整数,就和Java中的byte一样。SMALLINT:32,768to32,767的2字节大小的有符号整数,就和Java中的short一样。INT、INTEGER:2,147,483,648to2,147,483,647的4字节大小的有符号整数,就和Java中的int一样。BIGINT:9,223,372,036,854,775,808to9,223,372,036,854,775,807的8字节大小的有符号整数,就和Java中的long一样。
  有损精度数值类型:FLOAT:4字节大小的单精度浮点数值,就和Java中的float一样。DOUBLE、DOUBLEPRECISION:8字节大小的双精度浮点数值,就和Java中的double一样。关于FLOAT和DOUBLE的区别可见https:www。runoob。comw3cnotefloatanddoubledifferent。html
  布尔类型:BOOLEAN
  NULL类型:NULL
  Raw类型:RAW(class,snapshot)。只会在数据发生网络传输时进行序列化,反序列化操作,可以保留其原始数据。以Java举例,class参数代表具体对应的Java类型,snapshot代表类型在发生网络传输时的序列化器
  日期、时间类型:DATE:由年月日组成的不带时区含义的日期类型,取值范围〔00000101,99991231〕TIME、TIME(p):由小时:分钟:秒〔。小数秒〕组成的不带时区含义的的时间的数据类型,精度高达纳秒,取值范围〔00:00:00。000000000到23:59:59。9999999〕。其中p代表小数秒的位数,取值范围〔0,9〕,如果不指定p,默认为0。TIMESTAMP、TIMESTAMP(p)、TIMESTAMPWITHOUTTIMEZONE、TIMESTAMP(p)WITHOUTTIMEZONE:由年月日小时:分钟:秒〔。小数秒〕组成的不带时区含义的时间类型,取值范围〔0000010100:00:00。000000000,9999123123:59:59。999999999〕。其中p代表小数秒的位数,取值范围〔0,9〕,如果不指定p,默认为6。TIMESTAMPWITHTIMEZONE、TIMESTAMP(p)WITHTIMEZONE:由年月日小时:分钟:秒〔。小数秒〕时区组成的带时区含义的时间类型,取值范围〔0000010100:00:00。00000000014:59,9999123123:59:59。99999999914:59〕。其中p代表小数秒的位数,取值范围〔0,9〕,如果不指定p,默认为6。TIMESTAMPLTZ、TIMESTAMPLTZ(p):由年月日小时:分钟:秒〔。小数秒〕时区组成的带时区含义的时间类型,取值范围〔0000010100:00:00。00000000014:59,9999123123:59:59。99999999914:59〕。其中p代表小数秒的位数,取值范围〔0,9〕,如果不指定p,默认为6。TIMESTAMPLTZ与TIMESTAMPWITHTIMEZONE的区别在于:TIMESTAMPWITHTIMEZONE的时区信息是携带在数据中的,举例:其输入数据应该是2022010100:00:00。00000000008:00;TIMESTAMPLTZ的时区信息不是携带在数据中的,而是由FlinkSQL任务的全局配置决定的,我们可以由table。localtimezone参数来设置时区。INTERVALYEARTOMONTH、INTERVALDAYTOSECOND:interval的涉及到的种类比较多。INTERVAL主要是用于给TIMESTAMP、TIMESTAMPLTZ添加偏移量的。举例,比如给TIMESTAMP加、减几天、几个月、几年。INTERVAL子句总共涉及到的语法种类如下FlinkSQL案例所示。CREATETABLEsinktable(resultintervalyearTIMESTAMP(3),resultintervalyearpTIMESTAMP(3),resultintervalyearptomonthTIMESTAMP(3),resultintervalmonthTIMESTAMP(3),resultintervaldayTIMESTAMP(3),resultintervaldayp1TIMESTAMP(3),resultintervaldayp1tohourTIMESTAMP(3),resultintervaldayp1tominuteTIMESTAMP(3),resultintervaldayp1tosecondp2TIMESTAMP(3),resultintervalhourTIMESTAMP(3),resultintervalhourtominuteTIMESTAMP(3),resultintervalhourtosecondTIMESTAMP(3),resultintervalminuteTIMESTAMP(3),resultintervalminutetosecondp2TIMESTAMP(3),resultintervalsecondTIMESTAMP(3),resultintervalsecondp2TIMESTAMP(3))WITH(connectorprint);INSERTINTOsinktableSELECTFlinkSQL支持的所有INTERVAL子句如下,总体可以分为年月、日小时秒两种1。年月。取值范围为〔999911,999911〕,其中p是指有效位数,取值范围〔1,4〕,默认值为2。比如如果值为1000,但是p2,则会直接报错。INTERVALYEARf1INTERVAL10YEARasresultintervalyearINTERVALYEAR(p),f1INTERVAL100YEAR(3)asresultintervalyearpINTERVALYEAR(p)TOMONTH,f1INTERVAL1003YEAR(3)TOMONTHasresultintervalyearptomonthINTERVALMONTH,f1INTERVAL13MONTHasresultintervalmonth2。日小时秒。取值范围为〔99999923:59:59。999999999,99999923:59:59。999999999〕,其中p1p2都是有效位数,p1取值范围〔1,6〕,默认值为2;p2取值范围〔0,9〕,默认值为6INTERVALDAY,f1INTERVAL10DAYasresultintervaldayINTERVALDAY(p1),f1INTERVAL100DAY(3)asresultintervaldayp1INTERVALDAY(p1)TOHOUR,f1INTERVAL1003DAY(3)TOHOURasresultintervaldayp1tohourINTERVALDAY(p1)TOMINUTE,f1INTERVAL1003:12DAY(3)TOMINUTEasresultintervaldayp1tominuteINTERVALDAY(p1)TOSECOND(p2),f1INTERVAL1000:00:00。004DAYTOSECOND(3)asresultintervaldayp1tosecondp2INTERVALHOUR,f1INTERVAL10HOURasresultintervalhourINTERVALHOURTOMINUTE,f1INTERVAL10:03HOURTOMINUTEasresultintervalhourtominuteINTERVALHOURTOSECOND(p2),f1INTERVAL00:00:00。004HOURTOSECOND(3)asresultintervalhourtosecondINTERVALMINUTE,f1INTERVAL10MINUTEasresultintervalminuteINTERVALMINUTETOSECOND(p2),f1INTERVAL05:05。006MINUTETOSECOND(3)asresultintervalminutetosecondp2INTERVALSECOND,f1INTERVAL3SECONDasresultintervalsecondINTERVALSECOND(p2),f1INTERVAL300SECOND(3)asresultintervalsecondp2FROM(SELECTTOTIMESTAMPLTZ(1640966476500,3)asf1)2。复合数据类型
  数组类型:ARRAY、tARRAY。数组最大长度为2,147,483,647。t代表数组内的数据类型。举例ARRAY、ARRAY,其等同于INTARRAY、STRINGARRAY
  Map类型:MAPkt,vt。Map类型就和Java中的Map类型一样,key是没有重复的。举例MapSTRING,INT、MapBIGINT,STRING
  集合类型:MULTISET、tMULTISET。就和Java中的List类型,一样,运行重复的数据。举例MULTISET,其等同于INTMULTISET
  对象类型:ROW、ROW、ROW(n0t0,n1t1,。。。、ROW(n0t0d0,n1t1d1,。。。)。就和Java中的自定义对象一样。举例:ROW(myFieldINT,myOtherFieldBOOLEAN),其等同于ROW3。用户自定义数据类型
  用户自定义类型就是运行用户使用Java等语言自定义一个数据类型出来。但是目前数据类型不支持使用CREATETABLE的DDL进行定义,只支持作为函数的输入输出参数。如下案例:第一步,自定义数据类型publicclassUser{1。基础类型,Flink可以通过反射类型信息自动把数据类型获取到关于SQL类型和Java类型之间的映射见:https:nightlies。apache。orgflinkflinkdocsrelease1。13docsdevtabletypesdatatypeextractionpublicintage;publicStringname;2。复杂类型,用户可以通过DataTypeHint(DECIMAL(10,2))注解标注此字段的数据类型publicDataTypeHint(DECIMAL(10,2))BigDecimaltotalBalance;}第二步,在UDF中使用此数据类型publicclassUserScalarFunctionextendsScalarFunction{1。自定义数据类型作为输出参数publicUsereval(longi){if(i0i5){UserunewUser();u。age(int)i;u。namename1;u。totalBalancenewBigDecimal(1。1d);returnu;}else{UserunewUser();u。age(int)i;u。namename2;u。totalBalancenewBigDecimal(2。2d);returnu;}}2。自定义数据类型作为输入参数publicStringeval(Useri){if(i。age0i。age5){UserunewUser();u。age1;u。namename1;u。totalBalancenewBigDecimal(1。1d);returnu。name;}else{UserunewUser();u。age2;u。namename2;u。totalBalancenewBigDecimal(2。2d);returnu。name;}}}第三步,在FlinkSQL中使用1。创建UDFCREATEFUNCTIONuserscalarfuncASflink。examples。sql。12datatype。02userdefined。UserScalarFunction;2。创建数据源表CREATETABLEsourcetable(useridBIGINTNOTNULLCOMMENT用户id)WITH(connectordatagen,rowspersecond1,fields。userid。min1,fields。userid。max10);3。创建数据汇表CREATETABLEsinktable(resultrow1ROW,resultrow2STRING)WITH(connectorprint);4。SQL查询语句INSERTINTOsinktableselect4。a。用户自定义类型作为输出userscalarfunc(userid)asresultrow1,4。b。用户自定义类型作为输出及输入userscalarfunc(userscalarfunc(userid))asresultrow2fromsourcetable;5。查询结果I〔I〔9,name2,2。20〕,name2〕I〔I〔1,name1,1。10〕,name1〕I〔I〔5,name1,1。10〕,name1〕

外媒华为基本上已经不关心许可了芯片规则首次修改后,华为表示可以将全部5G技术打包出售给美企等,并表示愿意采用高通等芯片打造高端手机等设备。在随后的时间,美多次修改规则,要求台积电交出相关芯片数据,要求更多芯片在曝Redmi新机采用天玑8系迭代处理器,或为K50S今年年初开始,Redmi陆续发布了多款K50系列手机,并构建了K50宇宙。8月,Redmi推出了搭载骁龙8处理器的RedmiK50至尊版,号称K50宇宙终极大作。随着RedmiK5蓝牙实现OTA固件升级的原理蓝牙在现实生活中的应用非常广泛,各种嵌入式物联网设备随处可见。下面就来讲讲如何实现BLEOTA?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?等没有上巴和下巴,它们好惨5。41亿年前开始的寒武纪,地球海洋突然变得热闹起来,整个生物界呈现了爆发式的演化场景。尤其是无脊椎动物展现了蓬勃发展的面貌,各个门类的祖先竞相出现。同时,生物界首次出现了脊椎动物网约车大清除开始,聚合小平台瑟瑟发抖,网约车司机诚惶诚恐曾几何时,聚合平台是网约车行业的一股清流,在一众小平台的眼里,甚至是来拯救他们的。对这些小众平台来说,他们的底气和实力都不足以跟滴滴一喂顺风车T3出行等平台来抗衡,最好的办法就是加小米创业思考小米成功的第一性原理是什么?二上一篇文章讲了MIUI的成功,这次讲下小米一代手机成功的第一性原理上篇文章httpswww。toutiao。comarticle71553685931178398721。小米一代手从科大讯飞AI翻译笔P20Plus,看一款优秀翻译笔应具有的素质欢迎来到智能硬件分享馆,馆主聊翻译笔!今天为大家点一首好听的歌不凡歌,下一期想听什么歌可以在评论区点歌哦!说起英文学习利器,许多人会想到翻译笔(又名扫描词典笔),它以携带方便可随时风靡全球,TikTok会是下一个跨境电商巨头吗?近期,TikTok持续发力跨境电商,虽然目前还不能说是全球最大的跨境电商平台,但凭借着独特的商业模式在用户中的良好口碑以及众多品牌的支持,它能在短视频领域持续占据一席之地。TikT金沙江创投跨境电商投资布局兰亭集势行云集团辰海集团等在列近年来,我国跨境电商持续快速增长,从2015年至今,国务院先后六批批准设立了132个跨境电商综试区,已覆盖全国30个省区市。国内政策持续加持,加之资本对跨境电商热度提升。本文就金沙手机简史从刀锋到戴妃,没落的摩托罗拉文南城小柱HelloMOTO这一句开机问候语,相信停留在许多80后和90后的记忆里。在那个年代,除了经常听到的诺基亚手拉手的开机铃声,就是摩托罗拉的这句HelloMOTO了。配合M预计今年将有超53亿手机成电子垃圾堆起来超5万公里近日,WEEE论坛(WasteElectricalandElectronicEquipmentForum,废弃电机与电子设备论坛)统计数据显示,预期今年内将会有超过53亿部手机被废
巨星陨落悼念戈尔巴乔夫逝世今夜,幽兰的北极光消逝在北极冰川上,俄乌战争的导弹划破寂静星空的夜晚,这位给北极熊留下巨大遗憾的老者一一一颗硕大而暗淡的巨星陨落了。他的去世无疑结束了一个难言的时代,却永远没有结束81年杜聿明病逝,追悼会被迫推迟15天,郑洞国怒批蒋经国假仁孝1959年9月18日,新中国成立第十周年,位于功德林战犯管理所,因一条振奋人心的消息,众人纷纷炸开了锅,就在今日,上级向全国发布了一条特赦令,内容很是简单直白,他们这些人中,关押年戈尔巴乔夫去世戈尔巴乔夫去世对他的评价横看成岭侧成峰,远近高低各不同站位不同,角度各异不过,他首先是前苏联人,站在前苏联人民的立场,作为政治家,他蠢得很。苏联解体,他功不可没。苏联解体,西方列强1944年叶飞去诊所看牙,看到一幅画,回去下令立刻抓捕老医生叶飞将军是我国开国上将,多年来南征北战,为了国家安定作出不小的贡献。他机智果敢,遇事冷静沉着,在他的带领下我军多次出奇制胜。叶飞将军不仅在战场上运筹帷幄,在日常生活中也十分细心,还一代抗日名将孙立人,为何受老蒋猜忌,被软禁33年之久蒋介石在用人之道上有自己一套独特的标准,对于亲信的身边人,哪怕是无能之辈,也将其提拔至重要岗位,比如曾因消极抗战盘剥民众而被驻地河南老百姓称为四害之一的汤恩伯(另三害是水灾旱灾蝗灾1930年彭德怀收到一封信大惊毛泽东已叛逃,仔细一看有破绽大家都知道,毛主席是中国伟大的革命领导人。在他的正确领导下,共产党一步步粉碎敌人的阴谋,建立了新中国。但是你知道吗?在那艰难的革命时期,彭德怀曾收到一封毛泽东的叛逃信。究竟是怎么一朱元璋的接任者(八)明孝宗朱祐樘chng我是明孝宗朱祐樘,大明朝第九位皇帝,有着许多事情想要诉说。我亲爹朱见深之前一直都在宫里忙着宠爱那个万贵妃,但苍天有眼妖妃为我亲爹生下的第一个儿子还不满一岁就早早夭折了,连个名字都没初来不知人间苦,回头已是苦中人笑看人间沉浮事闲坐摇扇一壶茶缘分本是生命中的偶然,花落才有花开,有散才会有奖。如果没有了那一份遗憾,又何来的喜悦?如果没有了那一份无奈,又怎么会懂得珍惜?缘分的来去没有谁可以先知先觉,也许冥冥之中有一只神奇的连打印都不用墨水?也不用换硒鼓,喵喵机学习打印机F2S评测头条创作挑战赛终于开学了,在家闭关一暑假的熊孩子终于要回归校园了!作为孩子她老爸的我,总算可以松下一口气了。这不,想着想着,心里也都偷偷乐着呢不过,我又将要面临一个问题,那就是打印三星GalaxyZFlip4向Z时代群体推荐的一部超强折叠屏手机伴随人们对生活品质需求的不断升级,以Z世代为主要消费群体的新浪潮来势汹汹。虽然市场趋势在变,但想要赢得用户,创新仍是第一要诀。依托首屈一指的技术积累与创新能力,三星GalaxyZF推荐电影这个杀手不太冷揭秘我的看法这个杀手不太冷静是一部由马丽魏翔主演的一部喜剧电影,我想向大家推荐这部电影中的男一号魏成功。魏成功,是一个游走在娱乐圈边缘的龙套演员,在一次阴差阳错之下,遇见了改变他一生的女明星米
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网