【发布时间】:2015-10-29 23:01:19
【问题描述】:
我有一个 firebird 数据库表,其中有一列 VARCHAR 类型的列由十六进制数组成:
我的专栏
2020FF
731DD1
...
我想使用一条 SQL 语句选择表中从十六进制转换为二进制的列在第 7 位(或第 8 位或第 9 位或任何其他位)包含值 1 的所有行。
例子:
2020ff -> 001000000010000011111111 -> 错误
731DD1 -> 011100110001110111010001 -> 是的
伪代码:
SELECT MyColumn FROM MyTable WHERE SUBSTRING(hexToBinary(MyColumn),7,7)=1
【问题讨论】:
-
Firebird 中没有标准功能可以让您执行此操作,您需要编写自己的 UDF;或查找执行此操作的现有 UDF。