当前位置:网站首页>SQL函数 %SQLSTRING
SQL函数 %SQLSTRING
2022-08-01 12:02:00 【用户7741497】
SQL函数 %SQLSTRING
将值排序为字符串的排序规则函数。
大纲
%SQLSTRING(expression[,maxlen])
%SQLSTRING expression
参数
expression
- 字符串表达式,可以是列名、字符串文字或另一个函数的结果,其中基础数据类型可以表示为任何字符类型(例如CHAR
或VARCHAR
)。表达式可以是子查询。maxlen
- 可选 — 一个正整数,指定整理后的值将被截断为maxlen
的值。请注意,maxlen
包括附加的前导空格。可以用双括号将maxlen
括起来以抑制文字替换:((maxlen
))。
描述
%SQLSTRING
将表达式转换为按(区分大小写)字符串排序的格式。 %SQLSTRING
从字符串中去除尾随空格(空格、制表符等),然后在字符串的开头添加一个前导空格。这个附加的空格强制将 NULL 和数值作为字符串进行整理。从数字中删除前导零和尾随零。
因为 %SQLSTRING
将空格附加到所有值,所以它将 NULL
值整理为空格,字符串长度为 1
。 %SQLSTRING
将任何仅包含空格(空格、制表符等)的值整理为 SQL 空字符串(''
)。当 %SQLSTRING
将空格附加到空(零长度)字符串时,它会将空格加上空字符串的内部表示形式 $CHAR(0)
进行整理,从而导致字符串长度为 2
。
可选的 maxlen
参数在索引或整理时将表达式字符串截断为指定的字符数。例如,如果插入带有 maxlen
截断的字符串,则插入完整的字符串,并且可以通过 SELECT
语句检索;此字符串的全局索引被截断为指定长度。这意味着 ORDER BY 和比较操作仅评估截断的索引字符串。这种截断对于对超过下标的最大字符长度的字符串进行索引特别有用。使用 maxlen
参数,如果需要对长字段进行索引,可以使用截断长度参数。
%SQLSTRING
在转换表达式后执行 maxlen
截断;如果 maxlen
超过转换后的表达式的长度,则不添加填充。最大字符串长度为 3,641,144
个字符; maxlen
没有强制执行最大值。
可以使用 %SYSTEM.Util
类的 Collation()
方法在 ObjectScript 中执行相同的排序规则转换:
DHC-APP> WRITE $SYSTEM.Util.Collation("The quick, BROWN fox.",8)
The quick, BROWN fox.
也可以使用 SQLSTRING()
方法调用从 ObjectScript 调用此函数:
DHC-APP> WRITE $SYSTEM.SQL.SQLSTRING("The quick, BROWN fox.")
The quick, BROWN fox.
这两种方法都支持 SQLSTRING
转换后的截断。请注意,截断长度必须包括附加的空白:
DHC-APP>WRITE $SYSTEM.Util.Collation("The quick, BROWN fox.",8,6)
The q
DHC-APP>WRITE $SYSTEM.SQL.SQLSTRING("The quick, BROWN fox.",6)
The q
注意:要将系统范围的默认排序规则从 %SQLUPPER
(不区分大小写)更改为 %SQLSTRING
(区分大小写),请使用以下命令:
WRITE $$SetEnvironment^%apiOBJ("collation","%Library.String","SQLSTRING")
发出此命令后,必须清除索引,重新编译所有类,然后重建索引。不要在其他用户访问表的数据时重建索引。这样做可能会导致查询结果不准确。
示例
以下查询在 WHERE
子句中使用 %SQLSTRING
来执行区分大小写的选择:
SELECT Name FROM Sample.Person
WHERE %SQLSTRING Name %STARTSWITH %SQLSTRING 'Al'
ORDER BY Name
默认情况下,%STARTSWITH
字符串比较不区分大小写。此示例使用 %SQLSTRING
格式使此比较区分大小写。它返回所有以“Al”
开头的名称(例如 Allen
、Alton
等)。请注意,使用 %STARTSWITH
时,应将 %SQLSTRING
排序规则应用于语句的两侧。
以下示例使用带有字符串截断的 %SQLSTRING
来返回每个名称的前两个字符。请注意,字符串截断是 3
(不是 2
),因为 %SQLSTRING
添加了前导空格。 ORDER BY
子句使用这个两个字符的字段将行放在一个粗略的排序顺序中:
SELECT Name, %SQLSTRING(Name,3) AS FirstTwo
FROM Sample.Person
ORDER BY FirstTwo
此示例在不更改字母大小写的情况下返回截断的值。
边栏推荐
- Flutter Widget 如何启用和屏蔽点击事件
- Envoy 源码流程图
- C language implementation!20000 in 4 seconds
- sql中ddl和dml(数据库表与视图的区别)
- How to Integrate Your Service Registry with Istio?
- 基于ArkUI eTS开发的坚果食谱(NutRecipes)
- 爱可可AI前沿推介(8.1)
- 稀疏表示--学习笔记
- Hot review last week (7.25 7.31)
- A new generation of ultra-safe cellular batteries, Sihao Airun goes on sale starting at 139,900 yuan
猜你喜欢
Beyond Compare 4 trial period expires
故障007:dexp导数莫名中断
Alibaba Cloud Official Redis Development Specification
Promise learning (4) The ultimate solution for asynchronous programming async + await: write asynchronous code in a synchronous way
爱可可AI前沿推介(8.1)
Process sibling data into tree data
新一代超安全蜂窝电池, 思皓爱跑上市13.99万元起售
【讲座分享】“营收“看金融
表达式引擎在转转平台的实践
安装apex报错
随机推荐
【随心笔记】假期快过去了,都干了点什么
ECCV22|只能11%的参数就能优于Swin,微软提出快速预训练蒸馏方法TinyViT
【公开课预告】:超分辨率技术在视频画质增强领域的研究与应用
小程序插件如何帮助开发者受益?
SQL函数 SQUARE
一文带你彻底厘清 Isito 中的证书工作机制
千万级乘客排队系统重构&压测方案——总结篇
2022 Go生态圈 rpc 框架 Benchmark
如何成功通过 CKA 考试?
实现集中式身份认证管理的案例
R语言ggplot2可视化:使用ggpubr包的ggscatter函数可视化散点图、使用xscale函数指定X轴坐标轴度量调整方式、设置x轴坐标为scientific使用科学计数法显示坐标值
Aeraki Mesh Joins CNCF Cloud Native Panorama
STM32 CAN过滤器配置详解
每日一题:连续子数组的最大和(动态规划)
How to Integrate Your Service Registry with Istio?
Apex installation error
基于ArkUI eTS开发的坚果食谱(NutRecipes)
(ES6 and above and TS) Map object to array
pandas connects to the oracle database and pulls the data in the table into the dataframe, filters all the data from the current time (sysdate) to one hour ago (filters the range data of one hour)
Find objects with the same property value Cumulative number Summarize