Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
获取一个位字符串,并为该字符串中的每个位返回一行。缺省情况下,仅返回位值为 1 的行。
sa_get_bits( bit_string [ , only_on_bits ] )
bit_string 使用此 LONG VARBIT 参数指定从中获取位的位字符串。如果该 bit_string 参数为 NULL,则不返回任何行。
only_on_bits 使用此可选的 BIT 参数指定是否只返回 1 值位(值为 1 的位)的行。指定 1(缺省值)仅返回一值位的行;指定 0 则为位字符串中的所有位返回行。
sa_get_bits 系统过程解码一个位字符串,为该位字符串中的每个位返回一行,表示该位的值。如果 only_on_bits 设置为 1(缺省值)或 NULL,则仅返回对应于一值位的行。对于一值位很少的长位字符串,通过优化可有效地处理此情况。如果 only_on_bits 设置为 0,则为位字符串中的每个位返回一行。
例如,语句 CALL sa_get_bits( '1010' ) 返回以下结果集,指明位字符串的位置 1 和位置 3 中的一值位。
CALL sa_get_bits( '1010' )
sa_get_bits 系统过程可用来将位字符串转换到关系中。这可用来将位字符串与表连接起来,或将位字符串检索为结果集,而不是单个二进制值。如果位字符串中有大量 0 位,则将该字符串检索为结果集会更有效,因为这些 0 位不需要进行检索。
无
以下示例显示如何使用 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;