通过添加数据源主键的值,她可以存储一个值并利用“按位与”操作来搜索字段。例如,一个由合并多个数据源而得到的数据所组成的行;CUSTOMER, SALES 和CLAIMS在data_source_sot字段中值为13(1+4+8)。
按位与
语法
bitand::=
按位与在两个表达式expr1 和expr2的各位上进行与操作,两者都必须解析成非负整数,然后返回一个整数。
参考:Oracle Database SQL Reference 10g Release 1 (10.1)
用户可以查询单个字段,来决定一行的“真实源”。如果“按位与”的操作成功了,那么data_source_id (expr2)就会返回一个除0以外的值。
这里我们看到来自SALES系统的客户数据。
| select bitand(data_source_sot,4) from customer where customer_name = 'National Gum Distributors'; Data Source ID |
这个函数通常与DECODE函数一起使用,如下面的例子中所显示的:
| select decode(bitand(data_source_sot,1) , 1,'CUSTOMER ' ,NULL) ||decode(bitand(data_source_sot,2) , 2,'MARKETING ',NULL) ||decode(bitand(data_source_sot,4) , 4,'SALES ' ,NULL) ||decode(bitand(data_source_sot,8) , 8,'CLAIMS ' ,NULL) ||decode(bitand(data_source_sot,16),16,'SERVICE' ,NULL) "Data Sources" from customer where customer_name = 'National Gum Distributors'; Data Sources ------------------------------------------- CUSTOMER SALES CLAIMS |
以下部分表显示了数据源和累计值之间的关系:
| 01 CUSTOMER 02 MARKETING 03 CUSTOMER,MARKETING 04 SALES 05 CUSTOMER,SALES 06 MARKETING,SALES 07 CUSTOMER,MARKETING,SALES 08 CLAIMS 09 CUSTOMER,CLAIMS 10 MARKETING,CLAIMS 11 CUSTOMER,MARKETING,CLAIMS 12 SALES,CLAIMS 13 CUSTOMER,SALES,CLAIMS 14 MARKETING,SALES,CLAIMS 15 CUSTOMER,MARKETING,SALES,CLAIMS 16 SERVICE . . . 31 CUSTOMER,MARKETING,SALES,CLAIMS,SERVICE |
