#Caché

0 关注者 · 975 帖子

  

InterSystems Caché 是一个多模型 DBMS 和应用服务器。

查看此处提供的更多详细信息

文档

文章 姚 鑫 · 十二月 18, 2021 5m read

第十九章 SQL谓词 %STARTSWITH(一)

用指定初始字符的子字符串匹配值。

大纲

scalar-expression %STARTSWITH substring

参数

  • scalar-expression - 将其值与子字符串进行比较的标量表达式(最常见的是数据列)。
  • substring - 解析为包含与标量表达式中的值匹配的第一个或多个字符的字符串或数字的表达式。

描述

%STARTSWITH谓词允许选择以子字符串中指定的字符开头的数据值。 如果substring不匹配任何标量表达式值,%STARTSWITH返回空字符串。 无论显示模式如何,这个匹配总是在逻辑(内部存储)数据值上执行。

下面的示例选择所有以“M”开头的名称:

SELECT Name FROM Sample.MyTest WHERE Name %STARTSWITH 'M'

可以用NOT来颠倒谓词的意思。 下面的示例选择除了以“M”开头的名称以外的所有名称:

SELECT Name FROM Sample.MyTest WHERE NOT Name %STARTSWITH 'M'

排序类型

%STARTSWITH使用与它匹配的字段相同的排序规则类型。 默认情况下,字符串数据类型字段是用SQLUPPER排序规则定义的,它不区分大小写。

在下面的例子中,UpName被定义为SQLUPPER; 子字符串匹配不区分大小写:

0
0 175
文章 姚 鑫 · 十二月 17, 2021 1m read

第十八章 SQL谓词 SOME

将值与子查询中的至少一个匹配值匹配。

大纲

scalar-expression comparison-operator SOME (subquery)

参数

  • scalar-expression - 将其值与子查询生成的结果集进行比较的标量表达式(最常见的是数据列)。
  • comparison-operator - 以下比较操作符之一:=(等于),<>!=(不等于),<(小于),<=(小于或等于),>(大于),>=(大于或等于),[(包含),或](跟随)。
  • subquery - 一个用括号括起来的子查询,它返回一个用于与标量表达式比较的结果集。

描述

SOME关键字与比较操作符一起创建谓词(量化比较条件),如果标量表达式的值与子查询检索到的一个或多个对应值匹配,则该谓词为真。 SOME谓词将单个标量表达式项与单个子查询SELECT项进行比较。 具有多个选择项的子查询将生成SQLCODE -10错误。

注意:SOMEANY关键字是同义词。

示例

下面的例子选择了居住在密西西比河以西任何一个州的工资超过75,000美元的员工:

0
0 74
文章 姚 鑫 · 十二月 16, 2021 5m read

第十七章 SQL谓词 %PATTERN

用包含字面值、通配符和字符类型代码的模式字符串匹配值。

大纲

scalar-expression %PATTERN pattern

参数

  • scalar-expression - 一个标量表达式(最常见的是数据列),它的值正在与模式进行比较。
  • pattern - 一个带引号的字符串,表示要与标量表达式中的每个值匹配的字符模式。 模式字符串可以包含双引号括起来的文字字符、指定字符类型的字母代码以及数字和作为通配符的句点(.)字符。

描述

%PATTERN谓词允许将字符类型代码和字面值的模式匹配到由标量表达式提供的数据值。 如果模式匹配完整的标量表达式值,则返回该值。 如果pattern没有完全匹配任何标量表达式值,%pattern将返回空字符串。

%PATTERN使用与ObjectScript模式匹配操作符相同的模式代码(? 操作符)。 模式由一对或多对重复计数和一个值组成。 重复计数可以是整数,句点(.)表示“任意数量的字符”,或者使用句点和整数的组合指定的范围。 值可以是字符类型代码字母或字符串字面值(在引号中指定)。

请注意,一个模式通常由多个重复/值对组成,因为该模式必须与整个数据值完全匹配。因此,许多模式都以“.E”对结尾,这意味着数据值的其余部分可以由任意数量的任意类型的字符组成。

模式匹配对的几个简单示例:

0
0 107
文章 姚 鑫 · 十二月 15, 2021 5m read

第十六章 SQL谓词 %MATCHES

用包含字面值、通配符和范围的模式字符串匹配值。

大纲

scalar-expression %MATCHES pattern [ESCAPE char]

参数

  • scalar-expression - 一个标量表达式(最常见的是数据列),它的值正在与模式进行比较。
  • pattern - 一个带引号的字符串,表示要与标量表达式中的每个值匹配的字符模式。 模式字符串可以包含文字字符,问号(?)和星号(*)通配符,方括号用于指定允许的值,反斜杠(\)用于指定紧跟其后的字符被视为文字。 模式也可以是空字符串或NULL,尽管它不匹配或返回NULL项。
  • ESCAPE char - 可选-包含单个字符的字符串。 这个字符字符可以在模式中用于指定紧跟在它后面的字符将被视为文字。 如果未指定,默认转义字符是反斜杠(\)。

描述

%MATCHES谓词是 IRIS扩展,用于将值匹配到模式字符串。 %MATCHES返回TrueFalse用于匹配操作。 模式字符串可以由字面量字符、通配符字符和匹配字面量的列表或范围组成。

模式匹配区分大小写。 模式匹配基于标量表达式的EXACT值,而不是它的排序规则值。 因此,%MATCHES操作始终是大小写敏感的,即使标量表达式的排序规则类型不区分大小写。

%MATCHES支持以下模式通配符:

0
0 120
文章 姚 鑫 · 十二月 14, 2021 7m read

第十五章 SQL谓词 LIKE

用包含字面值和通配符的模式字符串匹配值。

大纲

scalar-expression LIKE pattern [ESCAPE char]

参数

  • scalar-expression - 一个标量表达式(最常见的是数据列),它的值正在与模式进行比较。
  • pattern - 一个带引号的字符串,表示要与标量表达式中的每个值匹配的字符模式。 模式字符串可以包含字面字符、下划线(_)和百分比(%)通配符。
  • ESCAPE char 可选-包含单个字符的字符串。 这个字符字符可以在模式中用于指定紧跟在它后面的字符将被视为文字。

描述

LIKE谓词允许选择那些匹配模式中指定的字符的数据值。 模式可以包含通配符。 如果pattern不匹配任何标量表达式值,LIKE返回空字符串。

LIKE可以在任何可以指定谓词条件的地方使用,如本手册的谓词概述页面所述。

LIKE谓词支持以下通配符:

  • _ - 任何单个字符
  • % - 由0个或多个字符组成的序列。 (根据SQL标准,NULL不被认为是一个0字符的序列,因此不被这个通配符选中。)

在动态SQL或嵌入式SQL中,模式可以将通配符和输入参数或输入主机变量表示为连接的字符串,如示例部分所示。

注意:当在运行时提供谓词值时(使用? 输入参数或:var输入主机变量),结果谓词%STARTSWITH 'abc'提供了比等价的结果谓词'abc%'更好的性能。

排序类型

0
0 116
文章 姚 鑫 · 十二月 13, 2021 1m read

第十四章 SQL谓词 IS NULL

确定一个数据值是否为NULL

大纲

scalar-expression IS [NOT] NULL

描述

IS NULL谓词检测未定义的值。 可以检测到所有空值,或所有非空值:

SELECT Name, FavoriteColors FROM Sample.Person
WHERE FavoriteColors IS NULL 
SELECT Name, FavoriteColors FROM Sample.Person
WHERE FavoriteColors IS NOT NULL

IS NULL / IS NOT NULL谓词是少数几个可以在WHERE子句中用于流字段的谓词之一。 如下面的例子所示:

SELECT Title,%OBJECT(Picture) AS PhotoOref FROM Sample.Employee
WHERE Picture IS NOT NULL

不应将IS NULL谓词与SQL ISNULL函数混淆。

0
0 67
文章 Johnny Wang · 十二月 12, 2021 3m read

    您可能已经听说,我们目前正在为所有正在使用 Caché 和 Ensemble 的客户提供限时免费迁移到我们的下一代数据平台 InterSystems IRIS 的机会。

    虽然我们依旧如往常一样全力支持那些正在使用 Caché 数据库和 Ensemble 集成引擎的客户,但我们还是认为 InterSystems IRIS 是未来的关键。它结合了 Caché 和 Ensemble 的所有功能,并添加了大量令人兴奋的强大功能,从机器学习到原生 Python。

    这也正是我们为现有客户提供迁移到 InterSystems IRIS 并使用这些新功能的原因。 我们也通过就地迁移支持轻松迁移,这意味着无需数据库转换、分步迁移指南、教程等。

    听起来挺有趣对吗? 以下是我针对当前 Caché 和 Ensemble 应迁移到 InterSystems IRIS 的五个主要原因。

0
0 310
文章 姚 鑫 · 十二月 12, 2021 3m read

第十三章 SQL谓词 IS JSON

确定数据值是否为JSON格式。

注意:IRIS版本可用。其他不行。

大纲

scalar-expression IS [NOT] JSON [keyword]

参数

  • scalar-expression - 正在检查JSON格式的标量表达式。
  • keyword - 可选—可选值、标量、数组或对象。 默认为VALUE

描述

IS JSON谓词确定数据值是否为JSON格式。 下面的示例确定谓词是否是格式化正确的JSON字符串,是JSON对象还是JSON数组:

0
0 92
文章 姚 鑫 · 十二月 11, 2021 2m read

第十二章 SQL谓词 %INSET

将一个值匹配到一组生成的值。

大纲

scalar-expression %INSET valueset [SIZE ((nn))]

参数

  • scalar-expression - 一个标量表达式(最常见的是表的RowId字段),它的值正在与值集进行比较。
  • valueset - 对实现ContainsItem()方法的用户定义对象的对象引用(oref)。 该方法接受一组数据值,并在与标量表达式中的值匹配时返回一个布尔值。
  • SIZE ((nn)) - 可选-用于查询优化的数量级整数(10、100、1000等)。

描述

%INSET谓词允许通过选择与值集中指定的值相匹配的数据值来筛选结果集。 当标量表达式的值与valueset中的值匹配时,此匹配将成功。 如果值集值不匹配任何标量表达式值,%INSET返回空字符串。 无论显示模式如何,这个匹配总是在逻辑(内部存储)数据值上执行。

对于NULL值,%INSET永远不为真。 因此,它不会将标量表达式中的NULL与值集中的NULL相匹配。

与其他比较条件一样,%INSET用于SELECT语句的WHERE子句或HAVING子句中。

%INSET启用使用抽象的、编程指定的匹配值集过滤字段值。 具体地说,它使用抽象的、编程指定的临时文件或位图索引来过滤RowId字段值,其中的值集行为类似于位图索引或常规索引的最低下标层。

0
0 109
文章 姚 鑫 · 十二月 10, 2021 8m read

第十一章 SQL谓词 %INLIST

将一个值匹配到%List结构化列表中的元素。

大纲

scalar-expression %INLIST list [SIZE ((nn))]

参数

  • scalar-expression - 将其值与列表元素进行比较的标量表达式(最常见的是数据列)。
  • list - 包含一个或多个元素的%List结构。
  • SIZE ((nn)) - 可选-指定列表中元素数量估计值的整数。 必须指定为具有下列值之一的字面值:10100100010000,等等。

描述

%INLIST谓词是 IRIS扩展,用于将字段的值与列表结构的元素匹配。 %INLISTIN都允对多个指定值执行这样的相等比较。 %INLIST将这些多个值指定为单个列表参数的元素。 因此,%INLIST允许改变要匹配的值的数量,而无需创建单独的缓存查询。

0
0 51
文章 姚 鑫 · 十二月 9, 2021 5m read

第十章 SQL谓词 IN

将值匹配到以逗号分隔的非结构化列表中的项。

大纲

scalar-expression IN (item1,item2[,...])

scalar-expression IN (subquery)

参数

  • scalar-expression - 标量表达式(最常见的是数据列),将其值与以逗号分隔的值列表或子查询生成的结果集进行比较。
  • item - 一个或多个文本值、输入主机变量或解析为文本值的表达式。 以任何顺序列出,以逗号分隔。
  • subquery - 一个用括号括起来的子查询,它从单个列返回一个结果集,用于与标量表达式进行比较。

描述

IN谓词用于将值匹配到非结构化的项系列。 通常,它将列数据值与以逗号分隔的值列表进行比较。 IN可以执行相等比较和子查询比较。

与大多数谓词一样,可以使用NOT逻辑操作符反转ININNOT IN都不能用于返回空字段。 返回NULL字段使用IS NULL

可以在任何可以指定谓词条件的地方使用IN,如本手册的谓词概述页面所述。

相等测试

IN谓词可以用作多个相等比较的简写,这些比较用OR操作符连接在一起。 例如:

SELECT Name, Home_State FROM Sample.Person
WHERE Home_State IN ('ME','NH','VT','MA','RI','CT') 
0
0 82
文章 姚 鑫 · 十二月 8, 2021 5m read

第九章 SQL谓词 FOR SOME %ELEMENT

将列表元素值或列表元素的数量与谓词匹配。

大纲

FOR SOME %ELEMENT(field) [[AS] e-alias] (predicate)

参数

  • field - 将其元素与谓词进行比较的标量表达式(最常见的是数据列)。
  • AS e-alias - 可选-用于限定谓词中的%KEY%VALUE的元素别名。通常,当谓词包含嵌套的FOR某些%ELEMENT条件时,会使用此别名。别名必须是有效的标识符。
  • (predicate) - 用括号括起来的谓词条件。 在这个条件中,使用%VALUE/%KEY来确定条件匹配的是什么。 %VALUE匹配元素值(%VALUE= ' Red ')。 %KEY匹配元素的最小数目(%KEY=2)。 在此条件下,如果您指定了e-alias%VALUE%KEY可能是可选限定的。 这个谓词可以由多个带有ANDOR逻辑运算符的条件表达式组成。

描述

FOR SOME %ELEMENT谓词将字段中的列表元素与指定的谓词匹配。 SOME关键字指定字段中至少有一个元素必须满足指定的谓词子句。

谓词子句必须包含%VALUE%KEY关键字,后跟谓词条件。 这些关键字不区分大小写。

下面的例子解释了%VALUE%KEY的用法:

0
0 76
文章 姚 鑫 · 十二月 7, 2021 4m read

第八章 SQL谓词 FOR SOME

确定是否根据字段值的条件测试返回记录。

大纲

FOR SOME (table [AS t-alias]) (fieldcondition)

参数

  • table - Table可以是单个表,也可以是用逗号分隔的表列表。 括号是必须的。

  • AS t-alias - 可选-前一个表名的别名。 别名必须是有效的标识符; 它可以是一个分隔符。

  • fieldcondition - fieldcondition 指定一个或多个引用一个或多个字段的条件表达式。 字段条件用括号括起来。 可以使用AND(&)OR(!)逻辑操作符在字段条件中指定多个条件表达式。

描述

FOR SOME谓词允许根据表中一个或多个字段值的布尔条件测试来决定是否返回记录。 如果fieldcondition计算结果为true,则返回记录。 如果fieldcondition计算结果为false,则不返回记录。

对于表(及其可选的t-alias)参数,必须使用括号分隔。 分隔括号对于字段条件参数也是强制性的。 允许(但不是必需的)在这两组括号之间使用空格。

通常,FOR SOME用于确定是否根据另一个表中一条记录的内容从一个表返回一条记录。 FOR SOME还可用于确定是否根据同一表中记录的内容从表中返回记录。 在后一种情况下,要么返回所有记录,要么不返回任何记录。

0
0 119
文章 姚 鑫 · 十二月 6, 2021 2m read

第七章 SQL谓词 %FIND

使用位图块迭代将一个值匹配到一组生成的值。

大纲

scalar-expression %FIND valueset [SIZE ((nn))]

参数

  • scalar-expression - 一个标量表达式(最常见的是表的RowId字段),它的值正在与值集进行比较。
  • valueset - 对用户定义对象的对象引用(oref),该对象实现位图块迭代方法和ContainsItem()方法。 该方法接受一组数据值,并在与标量表达式中的值匹配时返回一个布尔值。
  • SIZE ((nn)) - 可选-用于查询优化的数量级整数(101001000等)。

描述

通过选择与值集中指定的值相匹配的数据值,通过迭代位图块序列中的值,%FIND谓词允许筛选结果集。 当标量表达式的值与valueset中的值匹配时,此匹配将成功。 如果值集值不匹配任何标量表达式值,%FIND返回空字符串。 无论显示模式如何,这个匹配总是在逻辑(内部存储)数据值上执行。

%FIND和其他比较条件一样,用于SELECT语句的WHERE子句或HAVING子句中。

%FIND使用抽象的、通过编程指定的匹配值集来过滤字段值。 具体来说,它使用抽象的、编程指定的位图来过滤RowId字段值,其中的值集行为类似于位图索引的下标层。

0
0 95
文章 姚 鑫 · 十二月 6, 2021 1m read

第六章 SQL谓词 EXISTS

检查表中是否至少存在一个对应行。

大纲

EXISTS select-statement

参数

  • select-statement - 一种简单的查询,通常包含一个条件表达式。

描述

EXISTS谓词测试指定的表,通常至少测试一行是否存在。 因为EXISTS后面的SELECT语句正在被检查是否包含某些内容,所以子句通常是这样的形式:

EXISTS (SELECT... FROM... WHERE...)
SELECT name
     FROM Table_A
     WHERE EXISTS
     (SELECT *
          FROM Table_B
          WHERE Table_B.Number = Table_A.Number)

在本例中,谓词测试子查询指定的一行或多行是否存在。

注意,测试必须发生在SELECT语句上(而不是在UNION上)。

NOT EXISTS子句测试表中是否有一行不存在,如下例所示:

0
0 105
文章 姚 鑫 · 十二月 4, 2021 4m read

第五章 SQL谓词 BETWEEN

大纲

scalar-expression BETWEEN lowval AND highval

参数

  • scalar-expression - 一种标量表达式(最常见的是数据列),将其值与低值和高值(包括高值)之间的值范围进行比较。
  • lowval - 解析为低排序规则序列值的表达式,指定与标量表达式中的每个值匹配的值范围的开始。
  • highval - 解析为高排序规则序列值的表达式,指定要与标量表达式中的每个值匹配的值范围的末尾。

描述

BETWEEN谓词允许选择lowvalhighval指定范围内的数据值。 这个范围包括低值和高值本身。 这等价于一对大于或等于操作符和一对小于或等于操作符。 下面的例子展示了这种比较:

SELECT Name,Age FROM Sample.Person
WHERE Age BETWEEN 18 AND 21
ORDER BY Age

这将返回Sample中的所有记录。 年龄值介于1821之间的人员表,包括这些值。 注意,必须按升序指定BETWEEN值; 例如BETWEEN 21 AND 18这样的谓词将返回空字符串。 如果标量表达式的值都不在指定的范围内,则BETWEEN返回空字符串。

0
0 124
文章 姚 鑫 · 十二月 3, 2021 1m read

第四章 SQL谓词 ANY

将值与子查询中的至少一个匹配值匹配。

大纲

scalar-expression comparison-operator ANY (subquery)

参数

  • scalar-expression - 将其值与子查询生成的结果集进行比较的标量表达式(最常见的是数据列)。
  • comparison-operator - 以下比较操作符之一:=(等于),<>!=(不等于),<(小于),<=(小于或等于),>(大于),>=(大于或等于),[(包含),或](跟随)。
  • subquery - 一个用括号括起来的子查询,它返回一个用于与标量表达式比较的结果集。

描述

ANY关键字与比较操作符一起创建谓词(量化比较条件),如果标量表达式的值匹配子查询检索到的一个或多个对应值,则该谓词为真。 ANY谓词将单个标量表达式项与单个子查询SELECT项进行比较。 具有多个选择项的子查询将生成SQLCODE -10错误。

注意:ANYSOME关键字是同义词。

任何可以指定谓词条件的地方都可以使用ANY,如本手册的谓词概述页面所述。

在适用的情况下,系统自动对任意子查询应用集值子查询优化(SVSO)。

示例

下面的例子选择了居住在密西西比河以西任何一个州的工资超过75,000美元的员工:

0
0 113
文章 姚 鑫 · 十二月 2, 2021 2m read

第三章 SQL谓词 ALL

将值与子查询中的所有对应值匹配。

大纲

scalar-expression comparison-operator ALL (subquery)

参数

  • scalar-expression - 将其值与子查询生成的结果集进行比较的标量表达式(最常见的是数据列)。
  • comparison-operator - 以下比较操作符之一:=(等于),<>!=(不等于),<(小于),<=(小于或等于),>(大于),>=(大于或等于),[(包含),或](跟随)。
  • subquery - 一个用括号括起来的子查询,它从单个列返回一个结果集,用于与标量表达式进行比较。

描述

ALL关键字与比较操作符一起创建谓词(量化比较条件),如果标量表达式的值与子查询检索到的所有对应值匹配,则该谓词为真。 ALL谓词将单个标量表达式项与单个子查询SELECT项进行比较。 具有多个选择项的子查询将生成SQLCODE -10错误。

ALL可以在任何可以指定谓词条件的地方使用,如本手册的谓词概述页面所述。

在适用的情况下,系统自动对ALL子查询应用集值子查询优化(SVSO)。

示例

下面的示例选择了Person数据库中小于Employee数据库中所有年龄的年龄:

0
0 108
文章 姚 鑫 · 十二月 1, 2021 6m read

第二章 SQL谓词的概述(二)

谓词和%SelectMode

所有谓词都使用逻辑(内部存储)数据值进行比较。 但是,有些谓词可以对谓词值执行格式模式转换,将谓词值从ODBCDisplay格式转换为Logical格式。 其他谓词不能执行格式模式转换,因此必须始终以Logical格式指定谓词值。

执行格式模式转换的谓词确定是否需要从匹配字段的数据类型(如DATE``%List)进行转换,并确定从%SelectMode设置进行转换的类型。 如果%SelectMode设置为逻辑格式以外的值(例如%SelectMode=ODBC%SelectMode=Display),则必须以正确的ODBC或Display格式指定谓词值。

0
0 69
文章 姚 鑫 · 十一月 30, 2021 1m read

第一章 SQL谓词的概述(一)

描述计算结果为真或假的逻辑条件。

使用谓词

谓词是一个条件表达式,其计算结果为布尔值(truefalse)。

谓词可以如下使用:

  • SELECT语句的WHERE子句或HAVING子句中确定哪些行与特定查询相关。 注意,不是所有谓词都可以在HAVING子句中使用。
  • JOIN操作的ON子句中确定哪些行与连接操作相关。
  • UPDATEDELETE语句的WHERE子句中,确定要修改哪些行。
  • WHERE CURRENT OF语句的AND子句中。
  • CREATE TRIGGER语句的WHEN子句中确定何时应用触发操作代码。

谓词列表

每个谓词包含一个或多个比较操作符,可以是符号,也可以是关键字子句。 SQL支持以下比较操作符:

0
0 95
文章 Weiwei Gu · 十一月 29, 2021 3m read

不是所有的多模型数据库都是相同的

作者:David Menninger

今天,许多现代应用程序需要的数据库管理能力往往不能通过一种方式就能实现。例如,当我建立一个支持旅游推荐和预订业务的应用程序时,我可能需要使用一些不同类型的数据库,包括用于用户会话的键值存储,用于产品目录的文档数据库,用于推荐的图形数据库,以及用于财务数据的关系数据库。

0
0 124
文章 姚 鑫 · 十一月 28, 2021 2m read

第九十章 SQL命令 WHERE CURRENT OF

使用游标指定当前行的UPDATE/DELETE子句。

大纲

WHERE CURRENT OF cursor

参数

  • cursor - 指定在光标的当前位置执行操作,光标是指向表的光标。

描述

WHERE CURRENT OF子句可用于基于游标的嵌入式SQL UPDATEDELETE语句,以指定位于要更新或删除记录上的游标。 例如:

   &sql(DELETE FROM Sample.Employees WHERE CURRENT OF EmployeeCursor)

删除最后一个FETCH命令从“EmployeeCursor”游标获得的行。

嵌入式SQL UPDATEDELETE可以使用WHERE子句(不带游标)或WHERE CURRENT OF(带声明游标),但不能同时使用两者。 如果指定的UPDATEDELETE既不带WHERE也不带WHERE CURRENT OF,则会更新或删除表中的所有记录。

更新的限制

0
0 77
文章 姚 鑫 · 十一月 27, 2021 4m read

第八十九章 SQL命令 WHERE(二)

相等比较谓词

下面是可用的相等比较谓词:

PredicateOperation
=Equals
<>Does not equal
!=Does not equal
>Is greater than
<Is less than
>=Is greater than or equal to
<=Is less than or equal to

例如:

SELECT Name, Age FROM Sample.Person
WHERE Age < 21

SQL根据排序规则(值的排序顺序)定义了比较操作。 如果两个值以完全相同的方式排序,则它们相等。 如果一个值排在第二个值之后,则该值大于另一个值。 字符串字段排序规则接受字段的默认排序规则。 IRIS默认排序规则不区分大小写。 因此,两个字符串字段值的比较或字符串字段值与字符串文字的比较(默认情况下)是不区分大小写的。 例如,如果Home_State字段值是两个字母的大写字符串:

0
0 66
文章 姚 鑫 · 十一月 26, 2021 2m read

第八十八章 SQL命令 WHERE(一)

指定一个或多个限制性条件的SELECT子句。

大纲

SELECT fields
FROM table
WHERE condition-expression

参数

  • condition-expression - 由一个或多个布尔谓词组成的表达式,该谓词控制要检索的数据值。

描述

可选的WHERE子句可以用于以下目的:

  • 指定限制要返回哪些数据值的谓词。
  • 指定两个表之间的显式连接。
  • 指定基表和另一个表中的字段之间的隐式连接。

WHERE子句最常用于指定一个或多个谓词,这些谓词用于限制SELECT查询或子查询检索到的数据(过滤出行)。 还可以在UPDATE命令、DELETE命令或INSERT(或INSERT or UPDATE)命令的结果集中使用WHERE子句。

WHERE子句限定或取消查询选择中的特定行。 符合条件的行是那些条件表达式为真的行。 条件表达式可以是一个或多个逻辑测试(谓词)。 多个谓词可以通过ANDOR逻辑操作符链接。

如果谓词包含除法,并且数据库中有任何值可以生成值为零或NULL的除法,则不能依赖求值顺序来避免被零除法。 相反,使用CASE语句来抑制风险。

WHERE子句可以指定包含子查询的条件表达式。子查询必须用圆括号括起来。

WHERE子句可以使用=(内部连接)符号连接操作符指定两个表之间的显式连接。

0
0 127
文章 姚 鑫 · 十一月 25, 2021 4m read

第八十七章 SQL命令 VALUES

指定字段中使用的数据值的INSERT/UPDATE子句。

大纲

(field1{,fieldn})
     VALUES (value1{,valuen})

参数

  • field - 字段名或以逗号分隔的字段名列表。
  • value - 值或以逗号分隔的值列表。 每个值被赋给相应的字段。

描述

VALUES子句用于INSERTUPDATEINSERT or UPDATE语句中,以指定要插入到字段中的数据值。 通常:

  • INSERT查询使用以下语法:
INSERT INTO tablename (fieldname1,fieldname2,...)
     VALUES (value1,value2,...)
  • UPDATE查询使用以下语法:
UPDATE tablename (fieldname1,fieldname2,...)
     VALUES (value1,value2,...)

VALUES子句中的元素依次对应于表名后面指定的字段。 注意,如果在VALUES子句中只指定了一个value元素,则没有必要将元素括在括号中。

下面的嵌入式SQL示例显示了一个INSERT语句,它向“Employee”表添加了一行:

0
0 98
文章 姚 鑫 · 十一月 24, 2021 2m read

第八十六章 SQL命令 USE DATABASE

设置当前名称空间和数据库。

大纲

USE [DATABASE] dbname

参数

  • dbname - 当前进程将使用的名称空间和相应的数据库作为当前名称空间。

描述

USE DATABASE命令将当前进程切换到指定的名称空间及其关联的数据库。 这允许在SQL中更改名称空间。 DATABASE关键字是可选的。

指定的dbname是所需的命名空间和包含数据库文件的对应目录的名称。 指定dbname作为标识符。 命名空间名称不区分大小写。

由于USERSQL保留字,因此必须使用分隔标识符来指定用户命名空间,如下面的SQL Shell示例所示:

USER>>USE DATABASE Samples
SAMPLES>>USE DATABASE "User"
USER>>

如果指定的dbname不存在,IRIS将发出SQLCODE -400错误。

USE DATABASE命令是一个特权操作。 在使用USE DATABASE之前,必须以具有适当权限的用户身份登录。 如果不这样做,将导致SQLCODE -99错误(特权冲突)。

使用$SYSTEM.Security.Login()方法为用户分配适当的权限:

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )
0
0 106