本节提供有关
NdbScanFilter
该类的信息。
- 家长班
没有任何
- 儿童班
没有任何
- 描述
-
NdbScanFilter
提供了一种为扫描操作指定过滤器的替代方法。由于此接口的开发正在进行中,因此
NdbScanFilter
该类的特性可能会在未来的版本中发生变化。 - 方法
-
下表列出了该类的公共方法以及每个方法的用途或用途:
表 2.57 NdbScanFilter 类方法及说明
姓名 描述 NdbScanFilter()
构造方法 ~NdbScanFilter()
析构方法 begin()
开始复合(一组条件) cmp()
将列值与任意值进行比较 cmp_param()
将列值与提供的参数值进行比较 end()
结束化合物 eq()
平等测试 ge()
测试大于或等于条件 getNdbError()
提供对错误信息的访问 getNdbOperation()
获取关联的 NdbOperation
gt()
测试大于条件 isfalse()
将化合物中的术语定义为 FALSE
isnotnull()
测试列值是否不是 NULL
isnull()
测试列值是否为 NULL
istrue()
将化合物中的术语定义为 TRUE
le()
测试小于或等于条件 lt()
小于条件测试 ne()
不平等测试 reset()
重置此 NdbScanFilter
对象setSqlCmpSemantics()
强制使用符合 SQL 的 NULL
比较处理
- 类型
-
该类
NdbScanFilter
定义了两个公共类型:BinaryCondition
:条件的类型,例如下限或上限。Group
:逻辑分组运算符,例如AND
orOR
。
NdbScanFilter 整数比较方法。
提供了几种方便的方法,当要比较的任意值是整数时
NdbScanFilter
,可以用来代替该
方法: ,
,
,
,
, 和
.
cmp()
eq()
ge()
gt()
le()
lt()
ne()
这些方法中的每一个本质上都是一个包装器,
其中包含该方法参数cmp()
的适当值
;例如,
定义如下:
BinaryCondition
condition
NdbScanFilter::eq()
int eq(int columnId, Uint32 value)
{
return cmp(BinaryCondition::COND_EQ, columnId, &value, 4);
}
- 描述
此方法用于启动复合,并指定用于对构成复合的条件进行分组的逻辑运算符。默认值为
AND
。- 签名
int begin ( Group group = AND )
- 参数
值
Group
:AND
、OR
、NAND
或之一NOR
。有关其他信息,请参阅 NdbScanFilter::Group。- 返回值
0
关于成功,-1
关于失败。
本节提供有关
BinaryCondition
数据类型的信息。
- 描述
-
此类型表示基于列值与某个任意值的比较的条件,即绑定条件。此类型的值用作该
cmp()
方法的第一个参数。当用于与
COND_EQ
、COND_NE
、COND_LT
、COND_LE
、COND_GT
或 进行比较时COND_GE
,固定长度字符和二进制列值必须以列大小为前缀,并且必须填充到长度。COND_LIKE
在、COND_NOTLIKE
、COL_AND_MASK_EQ_MASK
、COL_AND_MASK_NE_MASK
、COL_AND_MASK_EQ_ZERO
或COL_AND_MASK_NE_ZERO
比较 中使用此类值时,这不是必需的。COND_LIKE
使用and 比较的字符串COND_NOTLIKE
可以使用模式元字符%
and_
。有关详细信息,请参阅 NdbScanFilter::cmp()。BIT
比较运算符是 ,COL_AND_MASK_EQ_MASK
,COL_AND_MASK_NE_MASK
,COL_AND_MASK_EQ_ZERO
和COL_AND_MASK_NE_ZERO
。相应的方法可用于NdbInterpretedCode
和NdbOperation
; 有关这些方法的更多信息,请参阅 NdbInterpretedCode 按位比较操作。 - 枚举值
-
下表显示了可能的值以及说明:
表 2.58 NdbScanFilter 数据类型值和描述
姓名 描述 列类型比较 COND_EQ
平等 ( =
)任何 COND_NE
不等式 ( <>
或!=
)任何 COND_LE
下限 ( <=
)任何 COND_LT
严格下界 ( <
)任何 COND_GE
上限 ( >=
)任何 COND_GT
严格上限 (>) 任何 COND_LIKE
LIKE
(健康)状况字符串或二进制 COND_NOTLIKE
NOT LIKE
(健康)状况字符串或二进制 COL_AND_MASK_EQ_MASK
使用位掩码编辑的列值 AND
等于位掩码BIT
COL_AND_MASK_NE_MASK
使用位掩码编辑的列值 AND
不等于位掩码BIT
COL_AND_MASK_EQ_ZERO
使用位掩码编辑的列值 AND
等于零BIT
COL_AND_MASK_NE_ZERO
使用位掩码编辑的列值 AND
不等于零BIT
- 描述
-
此方法用于定义给定值与列值之间的比较。在 NDB 8.0 中,它也可以用来比较两列。(此方法实际上并不执行比较,稍后在执行为其
NdbScanFilter
定义的扫描时执行比较。)在许多情况下,如果要比较的值是一个整数,您可以使用
NdbScanFilter
为此目的提供的几种便捷方法之一。请参阅 NdbScanFilter 整数比较方法。 - 签名
-
int cmp ( BinaryCondition condition, int columnId, const void* value, Uint32 length = 0 )
此外,在 NDB 8.0 中:
int cmp ( BinaryCondition condition, int ColumnId1, int ColumnId2 )
- 参数
-
当用于将值与列进行比较时,此方法采用以下参数:
-
condition
:这表示要测试的条件,它将具有列 ID 的列的值columnID
与某个任意值进行比较。是condition
一个BinaryCondition
值;有关允许的值及其表示的关系,请参阅 NdbScanFilter::BinaryCondition。condition
值COND_LIKE
或COND_NOTLIKE
用于将列值与字符串模式进行比较 。 columnId
: 这是列的标识符,可以使用Column::getColumnNo()
方法获取。-
value
:要比较的值,表示为指向 的指针void
。使用
COND_LIKE
orCOND_NOTLIKE
比较条件时, thevalue
被视为字符串模式。不得填充此字符串或使用前缀。该字符串value
可以包含模式元字符或 “通配符”字符%
和_
,其含义如下所示:要匹配文字“ % ”或 “ _ ”字符,请使用反斜杠 (
\
) 作为转义字符。要匹配文字“ \ ”字符,请使用\\
.这些是 SQL
LIKE
和NOT LIKE
运算符支持的相同通配符,并以相同的方式解释。有关详细信息,请参阅 字符串比较函数和运算符。 length
:要比较的值的长度。默认值为0
。使用0
for thelength
与 comparing to 具有相同的效果NULL
,即使用isnull()
方法。
当用于比较两列时,
cmp()
采用以下参数:condition
:比较列时要测试的条件。条件可以是BinaryCondition
值EQ
、NE
、LT
、LE
、GT
或中的任何一个GE
。不接受其他值。columnID1
:要比较的两列中第一列的 ID。columnID1
: 第二列的ID。
使用此方法进行比较的列必须属于完全相同的类型。这包括长度、精度、比例和所有其他细节。
-
- 返回值
此方法返回一个整数:
0
成功和-1
失败。
- 描述
-
此方法用于定义列值与具有指定 ID 的参数值之间的比较。
NdbScanFilter
比较实际上是在执行为其定义 的扫描时执行的 。此方法是在 NDB 8.0.27 中添加的。
- 签名
int cmp_param() ( BinaryCondition condition, int colId, int paramId )
- 参数
-
当用于将值与列进行比较时,此方法采用以下参数:
-
condition
:这表示要测试的条件,它将具有列 ID 的列的值columnID
与某个任意值进行比较。是condition
一个BinaryCondition
值;有关允许的值及其表示的关系,请参阅 NdbScanFilter::BinaryCondition。condition
值COND_LIKE
或COND_NOTLIKE
用于将列值与字符串模式进行比较 。 colId
: 这是列的标识符,可以使用Column::getColumnNo()
方法获取。paramId
:要比较其值的参数的ID。
使用此方法进行比较的值必须属于完全相同的类型。这包括长度、精度、比例和所有其他细节。
-
- 返回值
此方法返回一个整数:
0
成功和-1
失败。
- 描述
这是 的构造函数方法
NdbScanFilter
,并创建该类的一个新实例。- 签名
NdbScanFilter ( class NdbOperation* op )
- 参数
此方法采用单个参数,即指向
NdbOperation
应用过滤器的指针。- 返回值
的新实例
NdbScanFilter
。- 析构函数
析构函数不接受任何参数,也不返回值。
NdbScanFilter
当不再需要对象时 ,应该调用它来删除 对象。
- 描述
此方法用于对列值和整数执行相等性测试。
- 签名
-
int eq ( int ColId, Uint32 value )
或者
int eq ( int ColId, Uint64 value )
- 参数
-
此方法有两个参数,列在此处:
ColId
待测值列的 ID( )用于比较列值的整数;这个整数可以是 32 位或 64 位,并且在任何一种情况下都是无符号的。
- 返回值
返回
0
成功或-1
失败。
- 描述
此方法用于对列值和整数执行大于或等于测试。
- 签名
-
此方法接受 32 位和 64 位值,如下所示:
int ge ( int ColId, Uint32 value ) int ge ( int ColId, Uint64 value )
- 参数
-
与
eq()
、lt()
、le()
和该类型的其他NdbScanFilter
方法一样,此方法有两个参数:ColId
待测值列的 ID( )用于比较列值的整数;这个整数可以是 32 位或 64 位,并且在任何一种情况下都是无符号的。
- 返回值
0
成功时;-1
失败时。
- 描述
因为构建时遇到的错误
NdbScanFilter
不会传播到任何涉及 的NdbOperation
对象,所以有必要使用此方法来访问错误信息。- 签名
const NdbError& getNdbError ( void )
- 参数
没有。
- 返回值
对
NdbError
.
- 描述
如果
NdbScanFilter
是用 构造的NdbOperation
,则此方法可用于获取指向该NdbOperation
对象的指针。- 签名
NdbOperation* getNdbOperation ( void )
- 参数
没有。
- 返回值
指向
NdbOperation
与 this 关联的指针NdbScanFilter
(如果有的话)。否则,NULL
。
本节提供有关
Group
数据类型的信息。
- 描述
此类型用于描述逻辑(分组)运算符,并与
begin()
方法一起使用。(参见 NdbScanFilter::begin()。)- 枚举值
-
下表显示了可能的值以及说明:
表 2.60 NdbScanFilter::Group 数据类型值和描述
价值 描述 AND
逻辑 AND
:A
ANDB
ANDC
OR
逻辑 OR
:A
ORB
ORC
NAND
逻辑 NOT AND
:NOT (
A
ANDB
ANDC
)NOR
逻辑 NOT OR
:NOT (
A
ORB
ORC
)
- 描述
此方法用于对列值和整数执行大于(严格上限)测试。
- 签名
-
此方法适用于 32 位和 64 位值:
int gt ( int ColId, Uint32 value ) int gt ( int ColId, Uint64 value )
- 参数
-
与该类型的其他
NdbScanFilter
方法一样,此方法有两个参数:ColId
待测值列的 ID( )用于比较列值的整数;这个整数可以是 32 位或 64 位,并且在任何一种情况下都是无符号的。
- 返回值
0
成功时;-1
失败时。
- 描述
此方法用于对列值和整数执行小于或等于测试。
- 签名
此方法有两种变体,以适应 32 位和 64 位值:
int le
(
int ColId,
Uint32 value
)
int le
(
int ColId,
Uint64 value
)
- 参数
-
与该类型的其他
NdbScanFilter
方法一样,此方法有两个参数:ColId
待测值列的 ID( )用于比较列值的整数;这个整数可以是 32 位或 64 位,并且在任何一种情况下都是无符号的。
- 返回值
返回
0
成功或-1
失败。
- 描述
此方法用于对列值和整数执行不等式测试。
- 签名
-
此方法有 32 位和 64 位变体,如下所示:
int ne ( int ColId, Uint32 value ) int ne ( int ColId, Uint64 value )
- 参数
-
与此类型
eq()
的其他NdbScanFilter
方法一样,此方法有两个参数:ColId
待测值列的 ID( )用于比较列值的整数;这个整数可以是 32 位或 64 位,并且在任何一种情况下都是无符号的。
- 返回值
返回
0
成功或-1
失败。
- 描述
此方法重置
NdbScanFilter
对象,丢弃任何先前的过滤器定义和错误状态。- 签名
void reset ( void )
- 参数
没有。
- 返回值
没有。
reset()
NULL
对由 设置的符合 SQL 的比较模式
没有影响
setSqlCmpSemantics()
。
NDB 8.0 中添加了此方法。
- 描述
-
传统上,在进行涉及 的比较时
NULL
,NdbScanFilter
将NULL
视为等于NULL
(因此认为NULL == NULL
是TRUE
)。这与 SQL 标准指定的不同,后者要求与NULL
return进行任何比较NULL
,包括NULL == NULL
.从 NDB 8.0.26 开始,可以通过调用不带参数的方法来覆盖此行为。这样做会导致
NdbScanFilter
创建下一个对象,以便在其整个生命周期内对其所有操作使用符合 SQL 的NULL
比较。setSqlCmpSemantics()
一旦被调用,就不能取消设置 ;调用reset()
在这方面没有效果。NdbScanFilter
此方法的效果仅扩展到要创建的下一个实例 ;setSqlCmpSemantics()
除非事先调用 ,否则任何后续实例都使用传统的比较模式。该方法对
NULL
排序没有影响;NdbScanFilter
总是被认为NULL
小于任何其他值。 - 签名
void setSqlCmpSemantics ( void )
- 参数
没有任何
- 返回值
没有任何
此方法是在 NDB 8.0.26 中添加的。