# 第九十四章 SQL函数 %MINUS 将数字转换为规范整理格式,然后反转符号的整理函数。 # 大纲 ```java %MINUS(expression) %MINUS expression ``` # 参数 - `expression` - 表达式,可以是列名、数字或字符串文字、算术表达式或另一个函数的结果,其中基础数据类型可以表示为任何字符类型。 # 描述 `%MINUS` 将数字或数字字符串转换为规范形式,反转符号,然后以数字排序规则返回这些表达式值。 `%MINUS` 和 `%PLUS` 在功能上是相同的,只是 `%MINUS` 反转了符号。它为解析为正数的任何数字添加减号前缀,并从解析为负数的任何数字中删除减号。零从不签名。 一个数字可以包含前导零和尾随零、多个前导加号和减号、一个小数点指示符 (`.`) 和 `E` 指数指示符。在规范形式中,执行所有算术运算,扩展指数,将符号解析为单个前导减号或无符号,并去除前导零和尾随零。 可以使用或不使用封闭字符串分隔符来指定数字文字。如果字符串包含非数字字符,`%MINUS` 会在第一个非数字字符处截断数字,并以规范形式返回数字部分。非数字字符串(任何以非数字字符开头的字符串)返回为 `0`。`%MINUS` 也将 `NULL` 作为 `0` 返回。 `%MINUS` 是一个 SQL 扩展,用于 SQL 查找查询。 可以使用 `%SYSTEM.Util` 类的 `Collation()` 方法在 ObjectScript 中执行相同的排序规则转换: ```java DHC-APP> WRITE $SYSTEM.Util.Collation("++007.500",4) -7.5 ``` 将 `%MINUS` 与 `%MVR` 排序规则进行比较,后者根据字符串中的数字子字符串对字符串进行排序。 # 示例 以下示例使用 `%MINUS` 以家庭街道号的数字降序返回记录: ```sql SELECT Name,Home_Street FROM Sample.Person ORDER BY %MINUS(Home_Street) ``` ![image](C98FD0FCACE74707BCD2653DFBC140B2) 请注意,上面的示例按数字顺序对街道地址的整数部分进行排序。将此与以下 `ORDER BY DESC` 示例进行比较,该示例按整理顺序中的街道地址对记录进行排序: ``` SELECT Name,Home_Street FROM Sample.Person ORDER BY Home_Street DESC ``` ![image](C4A88F5AC2104819A5F1A2B1647F0276)