首页 > 其他分享 >第三章 数据类型和值

第三章 数据类型和值

时间:2023-11-24 15:11:27浏览次数:28  
标签:CHAR SET 第三章 数据类型 WRITE 位串 字符串 mystr

ObjectScript 是一种无类型语言 — 您不必声明变量的类型。任何变量都可以有字符串、数字或对象值。话虽如此,在 ObjectScript 中使用不同类型的数据时需要了解一些重要信息。

Strings

字符串是一组字符:字母、数字、标点符号等,由一组匹配的引号 (") 分隔:

 SET string = "This is a string"
 WRITE string

Null String / $CHAR(0)

SET mystr="":设置 null 或空字符串。该字符串已定义,长度为零,并且不包含任何数据:

  SET mystr=""
  WRITE "defined:",$DATA(mystr),!
  WRITE "length: ",$LENGTH(mystr),!
  ZZDUMP mystr

SET mystr=$CHAR(0):将字符串设置为空字符。字符串已定义,长度为 1,包含单个字符,十六进制值为 00:

  SET mystr=$CHAR(0)
  WRITE "defined:",$DATA(mystr),!
  WRITE "length: ",$LENGTH(mystr),!
  ZZDUMP mystr

SET mystr=$CHAR(0):将字符串设置为空字符。字符串已定义,长度为 1,包含单个字符,十六进制值为 00:

  SET mystr=$CHAR(0)
  WRITE "defined:",$DATA(mystr),!
  WRITE "length: ",$LENGTH(mystr),!
  ZZDUMP mystr
  • 请注意,这两个值并不相同。但是,位串将这些值视为相同。
  • 请注意,InterSystems SQL 对这些值有自己的解释;请参阅 NULL 和空字符串。

您可以在字符串中包含一个“(双引号)字符作为文字,方法是在它前面加上另一个双引号字符:

 SET string = "This string has ""quotes"" in it."
 WRITE string

Concatenating Strings 连接字符串

您可以使用连接运算符将两个字符串连接成一个字符串:

 SET a = "Inter"
 SET b = "Systems"
 SET string = a_b
 WRITE string

通过使用连接运算符,您可以在字符串中包含非打印字符。以下字符串包含换行符 ($CHAR(10)) 字符:

 // $CHAR(10) 这个是回车 换行符号
 SET lf = $CHAR(10)
 SET string = "This"_lf_"is"_lf_"a string"
 WRITE string

String Comparisons 字符串比较

您可以使用等于 (=) 和不等于 ('=) 运算符来比较两个字符串。字符串相等比较区分大小写。

使用这些运算符将字符串与数字进行比较时请务必小心,因为此比较是字符串比较,而不是数字比较。因此,只有包含规范形式的数字的字符串才等于其对应的数字。 (“-0”不是规范数字。)这如以下示例所示:

  WRITE "Fred" = "Fred",!  // TRUE
  WRITE "Fred" = "FRED",!  // FALSE
  WRITE "-7" = -007.0,!    // TRUE
  WRITE "-007.0" = -7,!    // FALSE
  WRITE "0" = -0,!         // TRUE
  WRITE "-0" = 0,!         // FALSE
  WRITE "-0" = -0,!        // FALSE

<、>、<= 或 >= 运算符不能用于执行字符串比较。这些运算符将字符串视为数字并始终执行数字比较。使用这些运算符进行比较时,任何非数字字符串都会被分配数值 0。

字母大小写和字符串比较

字符串相等比较区分大小写。您可以使用 $ZCONVERT 函数将要比较的字符串中的字母转换为全部大写字母或全部小写字母。非字母字符不变。

少数字母只有小写字母形式。例如,德语 eszett ($CHAR(223)) 仅定义为小写字母。将其转换为大写字母会产生相同的小写字母。

因此,在将字母数字字符串转换为单个字母大小写时,最好始终转换为小写字母。

位串

位串表示具有布尔值的编号位的逻辑集合。字符串中的位从位号 1 开始编号。任何未显式设置为布尔值 1 的编号位均计算为 0。因此,引用超出显式设置的任何编号位将返回位值 0。

  • 位值只能使用位串函数 $BIT 和 $BITLOGIC 设置。

  • 位值只能使用位串函数 $BIT 、 $BITLOGIC 和 $BITCOUNT 访问。

  • 位串具有逻辑长度,即显式设置为 0 或 1 的最高位位置。此逻辑长度只能使用 $BITCOUNT 函数访问,通常不应在应用程序逻辑中使用。对于位串函数来说,未定义的全局或局部变量相当于任何指定编号位返回位值 0 且 $BITCOUNT 值为 0 的位串。

  • 位字符串存储为具有内部格式的普通 ObjectScript 字符串。此内部字符串表示形式无法使用位串函数访问。由于这种内部格式,位串的串长度对于确定串中位数没有任何意义。

  • 由于位串内部格式的原因,您不能将连接运算符与位串一起使用。尝试这样做会导致 </>INVALID BIT STRING</> 错误。

  • 处于相同状态(具有相同布尔值)的两个位串可能具有不同的内部字符串表示形式,因此不应在应用程序逻辑中检查或比较字符串表示形式。

  • 对于位串函数来说,指定为未定义变量的位串相当于所有位均为 0、长度为 0 的位串。

  • 与普通字符串不同,位字符串将空字符串和字符 $CHAR(0) 视为彼此等效并表示 0 位。这是因为 $BIT 将任何非数字字符串视为 0。因此:

  SET $BIT(bstr1,1)=""
  SET $BIT(bstr2,1)=$CHAR(0)
  SET $BIT(bstr3,1)=0
  IF $BIT(bstr1,1)=$BIT(bstr2,1) {WRITE "bitstrings are the same"} ELSE {WRITE "bitstrings different"}
  WRITE $BITCOUNT(bstr1),$BITCOUNT(bstr2),$BITCOUNT(bstr3) 
  • 事务期间全局变量中设置的位将在事务回滚后恢复为之前的值。但是,回滚不会将全局变量位字符串返回到其先前的字符串长度或先前的内部字符串表示形式。回滚操作不会恢复局部变量。

  • 逻辑位图结构可以由位串数组表示,其中数组的每个元素表示具有固定位数的“块”。

  • 由于 undefined 相当于全 0 位的块,因此数组可以是稀疏的,其中表示全 0 位的块的数组元素根本不需要存在。

  • 因此,并且由于上述回滚行为,应用程序逻辑应避免依赖于位字符串的长度或使用 $BITCOUNT(str) 或 $BITCOUNT(str,0) 可访问的 0 值位的计数。

Numbers

// TODO 

数字基础知识

标签:CHAR,SET,第三章,数据类型,WRITE,位串,字符串,mystr
From: https://www.cnblogs.com/riusky/p/17852305.html

相关文章

  • Python 数据类型
    Task2数据类型常用内置类型基本的数据类型整数Integer(int)浮点数Float布尔值Boolean(bool)类型Type坦白来说,type是一种面向类的对象,python是一种面向的对象友好的语言print(type(2)) #int型print(type(2.3)) #float型的print(type(2>2.3)) #bool型......
  • Oracle 隐式数据类型转换的坑
    在执行sql时遇到了一个转换类型的错误 ORA-01722:invalidnumber...LEFTJOINAONB.BUSINESSID=A.ID...原因是在进行隐式数据类型转换时,BUSINESSID字段是VARCHAR2类型,其中有些业务数据包含了非数字字符,导致转换报错可以使用下面的sql查哪些数据的字段包含了非数......
  • 聪明办法学python chap2数据类型与操作 3变量与函数
    Python(二)数据类型与操作类型print(type(2))#整型intprint(type(2.2))#浮点型floatprint(type(2>3.4))#布尔型boolprint(type(type(2)))#类型typeprint(t......
  • Python TASK02 :数据类型操作
    #数据类型操作####常用内置类型BUILTINTYPES1.整数Integer(int)2.浮点数Float3.布尔值Boolean(bool)4.类型Type(是的,“类型”也是种类型!)严格的来说,Type是一种类的对象,Python是一门“面向对象友好”的语言 so:print(type(2))--><class'int'>......
  • MySQL 8.0支持哪些数据类型?
    数值数据类型整数类型:TINYINT:微型整数类型;占用1bytes空间;有符号支持的范围:-128~127;无符号支持的范围:0~255。SMALLINT:小型整数类型;占用2bytes空间;有符号支持的范围:-32768~32767;无符号支持的范围:0~65535。MEDIUMINT:中型整数类型;占用3bytes空间;有符号支持的范......
  • 数据类型转换
    一、数据类型转换的种类有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。Python数据类型转换可以分为两种:隐式类型转换-自动完成显式类型转换-需要使用类型函数来转换(一)隐式类型转换在隐式类型转换中,Python会自......
  • 数据类型及其操作
    Task03:数据类型和操作DataTypesandOperators数据类型1,整数Intger(int)2,浮点数Float3,布尔值Boolean(bool)4,类型Type("Type也是·一种类型")严格的来说,Type是一种类的对象,python是一门“面向对象友好”的语言print(type(2))<class'int'>print(type(2.2))<class'float......
  • MySQL数据类型
    数据类型1.MySQL中的数据类型类型类型举例整数类型TINYINT,SMALLINT,MEDIUMINT,INTBIGINT浮点类型FLOAT,DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR,TIME,DATE,DATETIME,TIMESTAMP文本字符串类型CHAR,VARCHAR,TI......
  • 基本数据类型
    一、python3基本数据类型(一)六大标准数据类型Number(数字)String(字符串)Bool(布尔值)List(列表)Sat(集合)Tuple(元组)Dictionary(字典)在六种标准类型中不可变数据(3个):Number(数字),String(字符串),Tuple(元组)可变元素(3个):List(列表),Sat(集合),Dictionary(字典)此外还......
  • Python——第三章:函数的返回值
    函数的返回值:函数执行之后.会给调用方一个结果.这个结果就是返回值关于return:    函数只要执行到了return.函数就会立即停止并返回内容.函数内的return的后续的代码不会执行    1.如果函数内没有return,此时外界收到的是None    2.如果写了re......