Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 系统对象 » 系统过程 » 按字母顺排序的系统过程列表

 

sa_get_bits 系统过程

获取一个位字符串,并为该字符串中的每个位返回一行。缺省情况下,仅返回位值为 1 的行。

语法
sa_get_bits( bit_string [ , only_on_bits ] )
参数
  • bit_string   使用此 LONG VARBIT 参数指定从中获取位的位字符串。如果该 bit_string 参数为 NULL,则不返回任何行。

  • only_on_bits   使用此可选的 BIT 参数指定是否只返回 1 值位(值为 1 的位)的行。指定 1(缺省值)仅返回一值位的行;指定 0 则为位字符串中的所有位返回行。

结果集
数据类型 说明
bitnum UNSIGNED INT 此行所描述的位的位置。例如,位字符串中第一个位的 bitnum 为 1。
bit_val BIT 在位置 bitnum 处的位的值。如果 only_on_bits 设置为 1,则此值始终为 1。
注释

sa_get_bits 系统过程解码一个位字符串,为该位字符串中的每个位返回一行,表示该位的值。如果 only_on_bits 设置为 1(缺省值)或 NULL,则仅返回对应于一值位的行。对于一值位很少的长位字符串,通过优化可有效地处理此情况。如果 only_on_bits 设置为 0,则为位字符串中的每个位返回一行。

例如,语句 CALL sa_get_bits( '1010' ) 返回以下结果集,指明位字符串的位置 1 和位置 3 中的一值位。

bitnum bit_val
1 1
3 1

sa_get_bits 系统过程可用来将位字符串转换到关系中。这可用来将位字符串与表连接起来,或将位字符串检索为结果集,而不是单个二进制值。如果位字符串中有大量 0 位,则将该字符串检索为结果集会更有效,因为这些 0 位不需要进行检索。

权限

None

副作用

另请参见
示例

以下示例显示如何使用 sa_get_bits 系统过程将一组整数编码为位字符串,然后对其进行解码以供在连接中使用:

CREATE VARIABLE @s_depts LONG VARBIT;

SELECT  SET_BITS( DepartmentID )
 INTO @s_depts
 FROM Departments
 WHERE DepartmentName like 'S%';

SELECT *
 FROM sa_get_bits( @s_depts ) B 
  JOIN Departments D ON B.bitnum = D.DepartmentID;