第117章 SQL函数 REPLICATE

181 阅读4分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情

第117章 SQL函数 REPLICATE

将字符串重复指定次数的字符串函数。

大纲

REPLICATE(expression,repeat-count)

参数

  • expression - 要重复的字符串表达式。
  • repeat-count - 重复的次数,以整数表示。

描述

注意:REPLICATE 函数是 REPEAT 函数的别名。提供 REPLICATE 是为了与 TSQL 兼容。有关详细信息,请参阅重复。

区分大小写

ObjectScript的某些部分区分大小写,而其他部分不区分大小写。一般来说,ObjectScript的用户可定义部分区分大小写,而关键字不区分大小写:

  • 区分大小写:变量名(本地、全局和进程私有全局)和变量下标、类名、方法名、属性名、属性的实例变量的i%、例程名、宏名、宏包含文件(.inc文件)名、标签名、锁名、密码、嵌入式代码指令标记字符串、嵌入式SQL主机变量名。
  • 不区分大小写:命令名、函数名、特殊变量名、命名空间名(见下文)、用户名和角色名、预处理器指令(如#include)、字母代码(用于LOCKOPENUSE)、关键字代码(用于$STACK)、模式匹配代码和嵌入式代码指令(&html&js&sql)。通过自定义%ZLANG例程添加的自定义语言元素不区分大小写;创建它们时必须使用大写,引用它们时可以使用任何大小写。由于iKnow索引通过将文本转换为小写来标准化文本,因此大多数iKnow值(包括域名)都不区分大小写。
  • 通常不区分大小写:以下内容区分大小写取决于平台:设备名、文件名、目录名、磁盘驱动器名。指数符号通常不区分大小写。大写“E”始终是有效的指数符号;可以使用%SYSTEM.ProcessScienceNotation()方法将小写“e”配置为当前进程的有效或无效,也可以使用Config.Miscellous类的ScienceNotation属性在系统范围内将其配置为有效或无效。

标识符

  • 用户定义的标识符(变量、例程和标签名称)区分大小写。String, string, and STRING 都引用不同的变量。全局变量名也区分大小写,无论是用户定义的还是系统提供的。

注意:相比之下,CachéSQL标识符不区分大小写。

  • 关键字名称 命令、函数和系统变量关键字(及其缩写)不区分大小写。可以使用Write, write, WRITE, W, 或 w;所有这些都指的是同一命令。
  • 类名称 与类相关的所有标识符(类名、属性名、方法名等)。区分大小写。
  • 命名空间名称 命名空间名称不区分大小写,这意味着可以输入任意大小写字母组合的命名空间名称。但是请注意,Caché总是以大写形式存储名称空间名称。因此,Caché可能会以大写形式返回名称空间名称,而不是以指定的大小写形式返回。

Unicode

Unicode字符是16位字符,也称为宽字符。如果在Caché安装过程中选择了Unicode选项,则你的Caché实例支持Unicode国际字符集。如果在Caché安装期间选择了8位选项,则不支持CHAR(255)以外的字符;CHAR(255)以外的字符;CHAR函数返回大于255的整数的空字符串。$ZVERSION特殊变量和$SYSTEM.Version.IsUnicode()方法显示Caché安装是否支持Unicode。

在Caché的Unicode安装上,某些名称可以包含Unicode字母字符,而其他名称不能包含Unicode字母。Unicode字母定义为ASCII值大于255的字母字符。例如,希腊文的小写lambda是$Char(955),这是一个Unicode字母。

整个Caché允许使用Unicode字母字符,以下例外情况除外:

  • 变量名:局部变量名可以包含Unicode字母。但是,全局变量名和进程专用全局名不能包含Unicode字母。所有类型的变量的下标都可以用Unicode字符指定。
  • 用于数据库加密的管理员用户名和密码不能包含Unicode字符。

注意:日语区域设置不支持缓存名称中带重音的拉丁字母字符。除日文字符外,日文名称还可以包含拉丁字母字符A-Z和a-z(65-90和97-122),以及希腊大写字母字符(913-929和931-937)。

空格

在某些情况下,ObjectScript将空格视为语法上有意义的。除非另有说明,否则空白指的是空格、制表符和换行符。简而言之,规则是:

  • 空格必须出现在每行代码和每条单行注释的开头。以下项不需要前导空格:
  1. 标签(也称为标记或入口点):标签必须出现在第一列,前面没有空格字符。如果一行有标签,则标签与该行上的任何代码或注释之间必须有空格。如果标签有参数列表,则在标签名称和参数列表的左括号之间不能有空格。参数列表中的参数之前、之间或之后可以有空格。
  2. 宏指令:诸如#DEFINE之类的宏指令可以出现在列1中,而不带前面的空格字符。这是推荐的约定,但允许在宏指令之前使用空格。
  3. 多行注释:多行注释的第一行前面必须有一个或多个空格。多行注释的第二行和后续行不需要前导空格。
  4. 空行:如果一行不包含字符,则不需要包含任何空格。只由空格字符组成的行是允许的,并被视为注释。
  • 命令及其第一个参数之间必须且只有一个空格(不是制表符);如果命令使用后置条件,则命令与其后置条件之间没有空格。
  • 如果后置条件表达式包含任何空格,则整个表达式必须用括号括起来。
  • 在任何一对命令参数之间可以有任意数量的空格。
  • 如果一行包含代码,然后是单行注释,则它们之间必须有空格。
  • 通常,每个命令都显示在自己的行上,不过可以在同一行上输入多个命令。在这种情况下,它们之间必须有空格;如果一个命令是无参数的,那么它后面必须跟两个空格(两个空格、两个制表符或每个空格一个)。这两个必需的空格后面可能还有其他空格。