Spark SQL----用于格式化和解析的数字Pattern

Spark SQL----用于格式化和解析的数字Pattern

  • 一、描述
  • 二、语法
  • 三、Elements
  • 四、函数类型和错误处理
  • 五、例子
    • 5.1 to_number函数
    • 5.2 try_to_number 函数
    • 5.3 to_char函数

一、描述

诸如to_number和to_char之类的函数支持在字符串和Decimal类型的值之间进行转换。这些函数接受指示如何在这些类型之间进行映射的格式字符串。

二、语法

数字格式字符串支持以下语法:

  { ' [ MI | S ] [ $ ] [ 0 | 9 | G | , ] [...] [ . | D ] [ 0 | 9 ] [...] [ $ ] [ PR | MI | S ] ' }

三、Elements

每个数字格式字符串都可以包含以下元素(不区分大小写):

  • 0 or 9
    指定一个介于0和9之间的预期数字。
    格式字符串中的0或9序列与大小相同或更小的数字序列相匹配。如果0/9序列以0开头且在小数点之前,则需要精确匹配位数:解析时,仅匹配相同大小的数字序列;格式化时,结果字符串在数字序列中添加带零的左填充,以达到相同的大小。否则,0/9序列在解析时匹配大小相同或更小的任何数字序列,并在格式化时在结果字符串中用空格(如果在小数点之前)或零(如果在小数点之后)填充数字序列。请注意,如果数字序列的大小大于0/9序列,则格式化时该数字序列将变为“#”序列。
  • . or D
    指定小数点的位置。此字符只能指定一次。
    解析时,输入字符串不需要包含小数点。
  • , or G
    指定,分组(千)分隔符的位置。
    每个分组分隔符的左右两侧必须有一个0或9。解析时,输入字符串必须与与数字大小相关的分组分隔符匹配。
  • $
    指定$currency符号的位置。此字符只能指定一次。
  • S
    指定可选的“+”或“-”符号的位置。此字符只能指定一次。
  • MI
    指定可选的“-”符号(无“+”)的位置。此字符只能指定一次。
    格式化时,它会打印一个用于正值的空格。
  • PR
    将负输入值映射到相应字符串中的包装尖括号(<1>)。
    正输入值不接收包装尖括号。

四、函数类型和错误处理

  • to_number函数接受一个输入字符串和一个格式字符串参数。它要求输入字符串与提供的格式匹配,否则会引发错误。然后,函数返回相应的Decimal值。
  • try_to_number函数接受一个输入字符串和一个格式字符串参数。它的工作原理与to_number函数相同,只是如果输入字符串与给定的数字格式不匹配,它将返回NULL而不是引发错误。
  • to_char函数接受一个输入十进制数和一个格式字符串参数。然后,函数返回相应的字符串值。
  • 如果给定的格式字符串无效,则所有函数都将失败。

五、例子

下面的示例使用to_number、try_to_number和to_char SQL函数。请注意,在大多数示例中使用的格式字符串期望:

  • 开头有一个可选的符号,
  • 后面跟着一个美元符号,
  • 后面跟着一个3到6位数长的数字,
  • 千位分隔符,
  • 小数点后最多两位数字。

5.1 to_number函数

-- The negative number with currency symbol maps to characters in the format string.
> SELECT to_number('-$12,345.67', 'S$999,099.99');-12345.67-- The '$' sign is not optional.
> SELECT to_number('5', '$9');Error: the input string does not match the given number format-- The plus sign is optional, and so are fractional digits.
> SELECT to_number('$345', 'S$999,099.99');345.00-- The format requires at least three digits.
> SELECT to_number('$45', 'S$999,099.99');Error: the input string does not match the given number format-- The format requires at least three digits.
> SELECT to_number('$045', 'S$999,099.99');45.00-- MI indicates an optional minus sign at the beginning or end of the input string.
> SELECT to_number('1234-', '999999MI');-1234-- PR indicates optional wrapping angel brakets.
> SELECT to_number('9', '999PR')9

5.2 try_to_number 函数

-- The '$' sign is not optional.
> SELECT try_to_number('5', '$9');NULL-- The format requires at least three digits.
> SELECT try_to_number('$45', 'S$999,099.99');NULL

5.3 to_char函数

> SELECT to_char(decimal(454), '999');"454"-- '99' can format digit sequence with a smaller size.
> SELECT to_char(decimal(1), '99.9');" 1.0"-- '000' left-pads 0 for digit sequence with a smaller size.
> SELECT to_char(decimal(45.1), '000.00');"045.10"> SELECT to_char(decimal(12454), '99,999');"12,454"-- digit sequence with a larger size leads to '#' sequence.
> SELECT to_char(decimal(78.12), '$9.99');"$#.##"-- 'S' can be at the end.
> SELECT to_char(decimal(-12454.8), '99,999.9S');"12,454.8-"> SELECT to_char(decimal(12454.8), 'L99,999.9');Error: cannot resolve 'to_char(Decimal(12454.8), 'L99,999.9')' due to data type mismatch:Unexpected character 'L' found in the format string 'L99,999.9'; the structure of the formatstring must match: [MI|S] [$] [0|9|G|,]* [.|D] [0|9]* [$] [PR|MI|S]; line 1 pos 25

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通俗易懂的chatgpg的原理简介

目录 一、深度学习与语言模型 二、ChatGPT训练三步走 三、情景学习与思维链 四、修改提示语优化结果 五、能力评估和注意问题 六.算法原理 简介&#xff1a; ChatGPT的人工智能原理主要基于深度学习技术&#xff0c;特别是大规模的预训练语言模型和Transformer结构。Cha…

【redis】redis事务

1、基本概念 Redis事务是一组命令的集合&#xff0c;这组命令要么全部执行&#xff0c;要么全部不执行&#xff0c;以保证数据的一致性。传统数据库中的事务相比&#xff0c;Redis事务有其独特之处&#xff0c;尤其是它不支持事务回滚。 2、特性 原子性&#xff1a;事务中的所…

马斯克宣布xAI将在8月份推出Grok-2大模型 预计年底推出Grok-3

在今年内&#xff0c;由特斯拉创始人马斯克创立的人工智能初创公司xAI将推出两款重要产品Grok-2和Grok-3。马斯克在社交平台上透露了这一消息&#xff0c;其中Grok-2预计在今年8月份面世&#xff0c;而Grok-3则计划于年底前亮相。 除此之外&#xff0c;马斯克还表示&#xff0c…

spring-05

什么是 Spring 的依赖注入 Spring 的依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是一种设计模式&#xff0c;用于管理和组织对象之间的依赖关系。在传统的程序设计中&#xff0c;对象通常会通过直接创建其他对象的实例来解决依赖关系&#xff0c…

EI期刊投稿要多久

EI检索的文章&#xff0c;无论是期刊还是会议论文&#xff0c;从投稿到发表的时间长度不一&#xff0c;受到多种因素的影响&#xff0c;包括期刊的审稿速度、会议的安排、以及EI的检索周期。 对于EI期刊文章&#xff0c;整个过程通常需要5到8个月&#xff0c;有时甚至更长。这包…

Java中如何优雅地处理TimeoutException异常?

Java中如何优雅地处理TimeoutException异常&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java编程中&#xff0c;TimeoutException异常是一个…

[信号与系统]IIR滤波器与FIR滤波器相位延迟定量的分析。

IIR滤波器与FIR滤波器最大的不同&#xff1a;相位延迟 IIR滤波器相位延迟分析 相位响应和延迟 这里讨论一下理想延迟系统的相位延迟。 对于一个给定的系统频率响应 H ( e j w ) H(e^{jw}) H(ejw)可以表示为 H ( e j w ) ∣ H ( e j w ) ∣ e Φ ( w ) H(e^{jw}) |H(e^{jw…

【面试系列】SQL 高频面试题

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

iptable精讲

SNAT策略 SNAT策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet SNAT策略的原理 源地址转换&#xff0c;Source Network Address Translantion 修改数据包的源地址 部署SNAT策略 1.准备二台最小化虚拟机修改主机名 主机名&#xff1a;gw 主机名&#xff1…

【Android面试八股文】为什么要用ContentProvider?它与SQL的实现上有什么区别

一、ContentProvider相比SQL的几个显著的区别和优势 ContentProvider是Android平台上的一个组件,主要用于在不同的应用程序之间共享数据,提供了一种标准化的接口来访问和操作数据。 它与直接使用SQL数据库有几个显著的区别和优势: 数据共享和访问控制: ContentProvider:…

嵌入式以太网硬件构成与MAC、PHY芯片功能介绍

一.以太网电路基本构成 1.总体介绍 对于上述三部分&#xff0c;并不一定都是独立的芯片&#xff0c;主要有以下几种情况&#xff1a; CPU内部集成了MAC和PHY&#xff0c;难度较高&#xff1b; CPU内部集成MAC,PHY采用独立芯片(主流方案)&#xff1b; CPU不集成MAC和PHY&#…

招生报名系统教培招生小程序

招生报名系统&#xff1a;轻松实现教培招生新高度 &#x1f680; 招生报名系统&#xff0c;开启智慧教育新时代 在当今数字化快速发展的时代&#xff0c;教育行业也迎来了变革的浪潮。招生报名系统作为这一变革的先锋&#xff0c;为教育机构提供了全新的招生渠道和管理方式。通…

原型模式的实现

1. 引言 1.1 背景 在实际编程中,有时需要频繁创建多个相似但稍有不同的对象。如果采用传统的对象创建方式,容易造成代码冗余,对象重复初始化操作也可能带来大量的的资源消耗(如时间、内存等)。这样不仅降低了灵活性,导致难以适应状态的变化,还降低了代码的可扩展性。 …

挑战与成长:面对他人成就引发的焦虑与迷茫

挑战与成长&#xff1a;面对他人成就引发的焦虑与迷茫 对于追求知识和技能的人来说&#xff0c;看到他人做出自己尚未达到的成就确实会带来焦虑感。这种焦虑常常源于对自己能力的质疑和对未来的不确定性。 在我的学习和发展过程中&#xff0c;有时确实会看到其他模型或系统能…

实操Nginx+Tomcat多实例部署,实现负载均衡和动静分离

192.168.10.10 192.168.10.20 192.168.10.30 location ~ \.jsp$ {proxy_pass http://192.168.10.50:8080;} location ~ \.(jsp|html)$ {root /usr/share/nginx/html;}192.168.10.40和192.168.10.50用脚本完成搭建此处安装附上脚本&#xff1a; #!/bin/bash# 定义变量 JDK_PACKA…

等保测评——云计算安全扩展(云计算关键技术)

虚拟化技术: 虚拟化是云计算的核心技术之一&#xff0c;它为云计算服务提供基础架构层面的支撑&#xff0c;是ICT&#xff08;信息通信技术&#xff09;服务快速走向云计算的最主要驱动力。虚拟化作为云计算的重要组成部分&#xff0c;最大的好处是能增强系统的弹性和灵活性&a…

【微服务网关——Websocket代理】

1.Websocket协议与原理 1.1 连接建立协议 1.1.1 客户端发起连接请求 客户端通过 HTTP 请求发起 WebSocket 连接。以下是一个 WebSocket 握手请求的例子&#xff1a; GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key…

题目:只通过+1和×2两种操作,最少几次能把0变成20240701?

偶然在网上看到了一个题目&#xff0c;看了看视频和评论&#xff0c;感觉挺有意思&#xff0c;记录一下。 只通过1和2两种操作&#xff0c;最少几次能把0变成20240701&#xff1f;_哔哩哔哩_bilibili 题目&#xff1a;只通过1和2两种操作&#xff0c;最少几次能把0变成202407…

Python面试宝典第3题:石子游戏

题目 Alice 和 Bob 用几堆石子在做游戏&#xff1a;一共有偶数堆石子&#xff0c;排成一行&#xff1b;每堆都有正整数颗石子&#xff0c;数目为 piles[i] 。游戏以谁手中的石子最多来决出胜负&#xff0c;石子的总数是奇数 &#xff0c;所以没有平局。 Alice 和 Bob 轮流进行&…

CV01_相机成像原理与坐标系之间的转换

目录 0.引言&#xff1a;小孔成像->映射表达式 1. 相机自身的运动如何表征&#xff1f;->外参矩阵E 1.1 旋转 1.2 平移 2. 如何投影到“像平面”&#xff1f;->内参矩阵K 2.1 图像平面坐标转换为像素坐标系 3. 三维到二维的维度是如何丢失的&#xff1f;…