文章目录

  • 第七十章 SQL函数 $JUSTIFY
  • 大纲
  • 参数
  • 描述
  • $JUSTIFY, ROUND和TRUNCATE
  • $JUSTIFY and LPAD
  • 参数
    • expression
    • width
    • decimal
  • 示例

第七十章 SQL函数 $JUSTIFY

在指定宽度内右对齐值的函数,可以选择舍入到指定的小数位数。

大纲

$JUSTIFY(expression,width[,decimal])

参数

  • expression - 要右对齐的值。它可以是数字值、字符串文字或解析为数字或字符串的表达式。
  • width - 表达式要在其中右对齐的字符数。正整数或计算结果为正整数的表达式。
  • decimal - 可选-小数位数。正整数或计算结果为正整数的表达式。将表达式中的小数位数四舍五入或填充到此值。如果指定DECIMAL,会将表达式视为数字。

描述

$JUSTIFY返回在指定宽度内右对齐的表达式指定的值。可以包括小数参数以在宽度内小数对齐数字。

  • $JUSTUST(expression,width):双参数语法在宽度内右对齐表达式。它不执行任何表达式转换。该表达式可以是数字字符串,也可以是非数字字符串。
  • $JUSTUST(expression,width,decimal):3参数语法将表达式转换为规范数字,将小数位四舍五入或零填充为小数,然后在宽度内右对齐生成的数值。如果表达式是非数字字符串或NULL,会将其转换为0,填充,然后右对齐。

$JUSTIFY识别当前区域设置的DecimalSeparator字符。
它根据需要添加或删除DecimalSeparator字符。
DecimalSeparator字符取决于区域设置;
通常,美式格式的语言环境使用句号(.),欧式格式的语言环境使用逗号()。
要为区域设置确定DecimalSeparator字符,请调用以下方法:

  WRITE ##class(%SYS.NLS.Format).GetFormatItem("DecimalSeparator")

如果指定的参数太少,就会发出SQLCODE -380
如果指定的参数太多,就会发出SQLCODE -381

$JUSTIFY, ROUND和TRUNCATE

当舍入到固定数目的小数位数非常重要时(例如,表示货币金额时),请使用$JUSTIFY,它将返回舍入操作后指定数目的尾随零。
decimal大于表达式中的小数位数时,$JUSTIFY的零位数。
$JUSTIFY也右对齐数字,使DecimalSeparator字符在一列数字中对齐。

ROUND也舍入指定数目的小数位数,但它的返回值总是规范化的,并删除后面的零。
例如,ROUND(10.004,2)返回10,而不是10.00
$JUSTIFY不同,ROUND允许指定舍入(默认值)或截断。

TRUNCATE截断指定的小数位数。
ROUND不同的是,如果截断的结果是尾随的零,那么这些尾随的零将被保留。
然而,与$JUSTIFY不同的是,TRUNCATE不填零。

ROUNDTRUNCATE允许舍入(或截断)到小数分隔符的左边。
例如,ROUND(128.5,-1)返回130。

$JUSTIFY and LPAD

LPAD的双参数形式和$JUSTIFY的双参数形式都通过用前导空格填充字符串来对字符串进行右对齐。
这两个参数形式的不同之处是它们如何处理小于输入表达式长度的输出宽度:LPAD截断输入字符串以适应指定的输出长度。
$JUSTIFY扩展输出长度以适应输入字符串。
如下示例所示:

SELECT '>'||LPAD(12345,10)||'<' AS lpadplus,'>'||$JUSTIFY(12345,10)||'<' AS justifyplus,'>'||LPAD(12345,3)||'<' AS lpadminus,'>'||$JUSTIFY(12345,3)||'<' AS justifyminus

LPAD的三个参数形式允许使用空格以外的字符作为左pad。

参数

expression

右对齐的值,并可选地表示为具有指定小数位数的数字。

  • 如果需要字符串调整,请不要指定decimal
    表达式可以包含任意字符。
    $JUSTIFY右对齐表达式,如width中所述。
  • 如果需要数字对齐,请指定decimal
    如果指定了decimal, 将表达式作为标准数字提供给$JUSTIFY
    它解决了前面的加减号,并删除了前面和后面的零。
    它在第一个非数字字符处截断表达式。
    如果表达式以非数字字符(例如货币符号)开头,则将表达式值转换为0
    规范转换不识别NumericGroupSeparator字符、货币符号、多个DecimalSeparator字符或尾随的加号或减号。

$JUSTIFY接收到正则数表达式后,$JUSTIFY执行其操作,将该正则数舍入或置零到小数位数的十进制数,然后右对齐结果,如width中所述。

width

要对转换后的表达式右对齐的宽度。
如果宽度大于表达式的长度(在数字和小数数字转换之后),将右对齐为宽度,并根据需要使用空白的左填充。
如果width小于表达式的长度(在数字和小数转换之后),将width设置为表达式值的长度。

将宽度指定为正整数。
宽度值为0、空字符串(")、NULL或非数字字符串将被视为宽度为0,这意味着将宽度设置为表达式值的长度。

decimal

小数位数的个数。
如果expression包含更多的小数位数,则$JUSTIFY将小数部分舍入为该小数位数。
如果表达式包含更少的小数位数,$JUSTIFY将小数部分用0填充到这个小数位数,并添加一个Decimal Separator字符(如果需要)。
如果decimal=0$JUSTIFY将表达式舍入为整数值并删除decimal Separator字符。

如果表达式值小于1,$JUSTIFY将在DecimalSeparator字符前插入前导零。

$DOUBLEINF-INFNAN不受十进制值的影响,由$JUSTIFY返回。

示例

下面的动态SQL示例对字符串执行右对齐。
不执行数值转换:

ClassMethod Justify()
{s myquery = "SELECT TOP 20 Age,$JUSTIFY(Name,18),DOB FROM Sample.Person"s tStatement = ##class(%SQL.Statement).%New()s qStatus = tStatement.%Prepare(myquery)s rset = tStatement.%Execute()d rset.%Display()w !,"End of data"
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Justify()
Age     Expression_2    DOB
31                  yaoxin      54536xiaoli
8                       姚鑫    63189
8                       姚鑫    63189
44                      姚鑫    50066姚鑫姚鑫Isaacs,Roberta Z.
44      Chadwick,Zelda S.Chadwick,Zelda S.Chadwick,Zelda S.Chadwick,Zelda S.Chadwick,Zelda S.   50066
89          Fives,James D.      33527
48        Vonnegut,Jose P.      48488
94      Chadbourne,Barb B.      31690
74         Quigley,Barb A.      38960
8        O'Rielly,Chris H.      63189
79        Willeke,Alvin L.      37099
4           Orwell,John V.      64375

下面的动态SQL示例使用指定的小数位数执行数字右对齐:

/// d ##class(PHA.TEST.SQLCommand).Justify1()
ClassMethod Justify1()
{s myquery = 2s myquery(1) = "SELECT TOP 20 $JUSTIFY(Salary,10,2) AS FullSalary,"s myquery(2) = "$JUSTIFY(Salary/7,10,2) AS SeventhSalary FROM Sample.Employee"s tStatement = ##class(%SQL.Statement).%New()s qStatus = tStatement.%Prepare(.myquery)s rset = tStatement.%Execute()d rset.%Display()w !,"End of data"
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Justify1()
FullSalary      SeventhSalary2662.00          380.2921796.00         3113.7187539.00        12505.5753891.00         7698.7153682.00         7668.8650822.00         7260.2960625.00         8660.7149575.00         7082.1431914.00         4559.1449912.00         7130.2936968.00         5281.1485770.00        12252.8643806.00         6258.0019669.00         2809.8654810.00         7830.0021430.00         3061.4374680.00        10668.5728570.00         4081.4379082.00        11297.4358713.00         8387.5720 Rows(s) Affected
End of data

下面的动态SQL示例对指定数量的小数进行数字右对齐,并对相同的数值进行字符串右对齐:

ClassMethod Justify2()
{s myquery = 2s myquery(1) = "SELECT $JUSTIFY({fn ACOS(-1)},8,3) AS ArcCos3,"s myquery(2) = "$JUSTIFY({fn ACOS(-1)},8) AS ArcCosAll"s tStatement = ##class(%SQL.Statement).%New()s qStatus = tStatement.%Prepare(.myquery)s rset = tStatement.%Execute()d rset.%Display()
}
DHC-APP> d ##class(PHA.TEST.SQLCommand).Justify2()
ArcCos3 ArcCosAll3.142        3.1415926535897932381 Rows(s) Affected

下面的动态SQL示例使用$DOUBLEINFNAN执行数字右对齐:

ClassMethod Justify3()
{d ##class(%SYSTEM.Process).IEEEError(0)s x = $DOUBLE(1.2e500)s y = x - xs myquery = 2s myquery(1) = "SELECT $JUSTIFY(?,12,2) AS INFtest,"s myquery(2) = "$JUSTIFY(?,12,2) AS NANtest"s tStatement = ##class(%SQL.Statement).%New()s qStatus = tStatement.%Prepare(.myquery)s rset = tStatement.%Execute(x,y)d rset.%Display()
}
DHC-APP> d ##class(PHA.TEST.SQLCommand).Justify3()
INFtest NANtestINF             NAN1 Rows(s) Affected

第七十章 SQL函数 $JUSTIFY相关推荐

  1. 第七章 SQL聚合函数 LIST

    文章目录 第七章 SQL聚合函数 LIST 大纲 参数 描述 包含逗号的数据值 LIST 和 %SelectMode LIST 和 ORDER BY 最大列表大小 相关的聚合函数 示例 第七章 SQL ...

  2. 在SQL中使用PL/SQL函数存在的问题

    -----------------------------Cryking原创------------------------------ -----------------------转载请注明出处, ...

  3. cups源码下载 linux_正点原子Linux第七十章Linux WIFI驱动实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第七十章Linux WIFI驱动实验 WIFI的使用已经 ...

  4. 第十章 SQL命令 CREATE PROCEDURE(一)

    文章目录 第十章 SQL命令 CREATE PROCEDURE(一) 大纲 参数 描述 参数 procname parameter_list 第十章 SQL命令 CREATE PROCEDURE(一) ...

  5. 【正点原子Linux连载】第七十章 Linux WIFI驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  6. 第七章 SQL查询(三)

    第七章 SQL查询(三) 一,什么是子查询 子查询是一个嵌套在 SELECT.INSERT.UPDATE 或 DELETE 语句或其他子查询中的查询 子查询在WHERE语句中的一般用法: SELECT ...

  7. 第五十章 SQL命令 HAVING(一)

    文章目录 第五十章 SQL命令 HAVING(一) 大纲 参数 描述 指定字段 选择项列表中的聚合函数 %AFTERHAVING 逻辑谓词 谓词区分大小写 谓词条件和%NOINDEX 相等比较谓词 B ...

  8. 你不知道的 ,MySQL中的七种SQL JOINS的实现,满外连接

    七种SQL JOINS的实现,满外连接 每博一文案 英国作家摩姆说过,我们每个人在世界上都是孤独的,因此 我们只能孤独地行走,尽管身体相互依傍,却并不在一起. 既不了解别的人,也不能为别人所了解. 当 ...

  9. 第十章 SQL聚合函数 STDDEV, STDDEV_SAMP, STDDEV_POP

    文章目录 第十章 SQL聚合函数 STDDEV, STDDEV_SAMP, STDDEV_POP 大纲 参数 描述 当前事务期间所做的更改 示例 第十章 SQL聚合函数 STDDEV, STDDEV_ ...

最新文章

  1. JAVA NIO之文件通道
  2. java jni 数据类型_【Android JNI】Native层解析Java复杂数据类型HashMap
  3. P1004 滑雪(DFS)
  4. 用私有构造器或者枚举类型强化Singleton 属性
  5. express 对数据库数据增删改查
  6. 文件处理_月隐学python第21课
  7. vert.x_使用vert.x 2.0,RxJava和mongoDB创建simpe RESTful服务
  8. LeetCode 371. 两整数之和(位运算加法)
  9. Objective-C 2.0 with Cocoa Foundation --- 3,类的声明和定义
  10. [Unity脚本运行时更新]C#4新特性
  11. [ExtJS 6] SenchaCmd编译出错与解决
  12. 网络协议 3 - 从物理层到 MAC 层
  13. 让读者快速了解RocketMQ消息中间件需要解决哪些问题
  14. 高通平台Bring-up
  15. Android开发之实现图片自动滚动显示标签的ViewPager
  16. 解读Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (6)
  17. 常用的SQL注入语句
  18. xiaomi 2C android root,小米MIX2如何ROOT?小米MIX2一键Root图文教程
  19. MyScript 手写识别数学公式、图形 自动计算
  20. vue——ViewModel 简易原理

热门文章

  1. 华为cmr一al09升级鸿蒙,华为平板 M5 10.8英寸 全网通(CMR-AL09)一键刷机教程,看教程秒懂刷机...
  2. matlab 共轭对称分量,利用共轭对称特性经IFFT转换为实数序列
  3. 初级算法:只出现一次的数字
  4. 中国最大的500家外商投资企业
  5. google/Chrome浏览器如何查看保存在网页上的密码
  6. java利用Date类做练习,实现倒计时30s功能
  7. java weblogic反序列化,WebLogic 反序列化漏洞(CVE-2017-10271)
  8. linux FTP云盘
  9. 最近面试的软件测试笔试题笔试题(已整理参考答案)
  10. 赛况激烈!2022 OceanBase数据库大赛50强诞生