IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 第145章 SQL函数 TO_NUMBER -> 正文阅读

[大数据]第145章 SQL函数 TO_NUMBER

第145章 SQL函数 TO_NUMBER

将字符串表达式转换为 NUMERIC 数据类型的值的字符串函数。

大纲

TO_NUMBER(string-expression)

TONUMBER(string-expression)

参数

  • string-expression - 要转换的字符串表达式。表达式可以是列名、字符串文字或另一个函数的结果,其中基础数据类型为 CHARVARCHAR2 类型。

描述

名称 TO_NUMBERTONUMBER 可以互换。它们支持 Oracle 兼容性。

TO_NUMBER 将字符串表达式转换为数字数据类型 NUMERIC。但是,如果 string-expression 的数据类型为 DOUBLE,则 TO_NUMBER 返回一个数据类型为 DOUBLE 的数字。

TO_NUMBER 转换采用数字字符串并通过解析加号和减号、扩展指数符号(“E”“e”)以及删除前导零将其转换为规范数字。 TO_NUMBER 在遇到非数字字符(例如字母或数字组分隔符)时停止转换。因此字符串 '7dwarves' 转换为 7。如果 string-expression 的第一个字符是非数字字符串,则 TO_NUMBER 返回 0。如果 string-expression 是空字符串 (''),则 TO_NUMBER 返回 0。TO_NUMBER-0 解析为 0 . TO_NUMBER 不解析算术运算。因此字符串 '2+4' 转换为 2。如果为字符串表达式指定 NULL,则 TO_NUMBER 返回 null

NUMERIC 数据类型的默认 SCALE2。因此,在 DISPLAY 模式下选择此值时,TO_NUMBER 始终显示返回值,保留 2 位小数。额外的小数位数四舍五入到小数点后两位;尾随零被解析为两位小数。当通过 xDBC 使用 TO_NUMBER 时,它还返回类型为 NUMERICSCALE2。在 LOGICAL 模式或 ODBC 模式下,返回值是规范数字;没有对小数位施加比例,并且省略了尾随零。

相关 SQL 函数

  • TO_NUMBER 将字符串转换为数字数据类型 NUMERIC
  • CASTCONVERT 可用于将字符串转换为任意数据类型的数字。例如,可以将一个字符串转换为多个数据类型 INTEGER
  • TO_DATE 将格式化的日期字符串转换为日期整数。
  • TO_TIMESTAMP 将格式化的日期和时间字符串转换为标准时间戳。

示例

以下两个示例显示 TO_NUMBER 如何将字符串转换为数字,然后将其作为具有适当 SCALE 的数据类型 NUMERIC 返回。第一个示例在显示模式下返回数字,第二个示例在逻辑模式下返回数字:

/// d ##class(PHA.TEST.SQLFunction).ToNumber()
ClassMethod ToNumber()
{
	s myquery = "SELECT TO_NUMBER('+-+-0123.0093degrees')"
	s tStatement = ##class(%SQL.Statement).%New()
	s tStatement.%SelectMode=2
	s qStatus = tStatement.%Prepare(myquery)
	s rset = tStatement.%Execute()
	d rset.%Display()  // Display mode value: 123.01
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).ToNumber()
Expression_1
123.01
 
1 Rows(s) Affected
/// d ##class(PHA.TEST.SQLFunction).ToNumber1()
ClassMethod ToNumber1()
{
	s myquery = "SELECT TO_NUMBER('+-+-0123.0093degrees')"
	s tStatement = ##class(%SQL.Statement).%New()
	s tStatement.%SelectMode=0
	s qStatus = tStatement.%Prepare(myquery)
	if qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
	s rset = tStatement.%Execute()
	d rset.%Display()   // Logical mode value: 123.0093
}

DHC-APP>d ##class(PHA.TEST.SQLFunction).ToNumber1()
Expression_1
123.0093
 
1 Rows(s) Affected

以下示例显示当 string-expressionDOUBLE 数据类型时,TO_NUMBER 将值作为数据类型 DOUBLE 返回:

/// d ##class(PHA.TEST.SQLFunction).ToNumber2()
ClassMethod ToNumber2()
{
	s myquery = "SELECT TO_NUMBER(CAST('+-+-0123.0093degrees' AS DOUBLE))"
	s tStatement = ##class(%SQL.Statement).%New()
	s tStatement.%SelectMode=2
	s qStatus = tStatement.%Prepare(myquery)
	if qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
	s rset = tStatement.%Execute()
	d rset.%Display()  // Display mode value
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).ToNumber2()
Expression_1
123.00929999999999608
 
1 Rows(s) Affected
/// d ##class(PHA.TEST.SQLFunction).ToNumber3()
ClassMethod ToNumber3()
{
	s myquery = "SELECT TO_NUMBER(CAST('+-+-0123.0093degrees' AS DOUBLE))"
	s tStatement = ##class(%SQL.Statement).%New()
	s tStatement.%SelectMode=0
	s qStatus = tStatement.%Prepare(myquery)
	if qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
	s rset = tStatement.%Execute()
	d rset.%Display()   // Logical mode value
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).ToNumber3()
Expression_1
123.00929999999999608
 
1 Rows(s) Affected

以下示例显示如何使用 TO_NUMBER 列出按数字升序排列的街道地址:

SELECT Home_Street,Name
FROM Sample.Person
ORDER BY TO_NUMBER(Home_Street)

在这里插入图片描述

将结果与按字符串升序排列的相同数据进行比较:

SELECT Home_Street,Name
FROM Sample.Person
ORDER BY Home_Street
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:02:54  更:2022-05-21 19:05:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:30:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码