mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-21 01:00:48 +00:00
make implementation clear and add more test
This commit is contained in:
parent
86db17e70f
commit
8707e3bea1
@ -135,7 +135,8 @@ bitSlice(s, offset[, length])
|
||||
- `offset` — The start index with bit, A positive value indicates an offset on the left, and a negative value is an
|
||||
indent on the right. Numbering of the bits begins with 1.
|
||||
- `length` — The length of substring with bit. If you specify a negative value, the function returns an open substring [
|
||||
offset, array_length - length). If you omit the value, the function returns the substring [offset, the_end_string]
|
||||
offset, array_length - length). If you omit the value, the function returns the substring [offset, the_end_string].
|
||||
If length exceeds s, it will be truncate.If length isn't multiple of 8, will fill 0 on the right.
|
||||
|
||||
**Returned value**
|
||||
|
||||
@ -147,6 +148,9 @@ Query:
|
||||
|
||||
``` sql
|
||||
select bin('Hello'), bin(bitSlice('Hello', 1, 8))
|
||||
select bin('Hello'), bin(bitSlice('Hello', 1, 2))
|
||||
select bin('Hello'), bin(bitSlice('Hello', 1, 9))
|
||||
select bin('Hello'), bin(bitSlice('Hello', -4, 8))
|
||||
```
|
||||
|
||||
Result:
|
||||
@ -155,6 +159,15 @@ Result:
|
||||
┌─bin('Hello')─────────────────────────────┬─bin(bitSlice('Hello', 1, 8))─┐
|
||||
│ 0100100001100101011011000110110001101111 │ 01001000 │
|
||||
└──────────────────────────────────────────┴──────────────────────────────┘
|
||||
┌─bin('Hello')─────────────────────────────┬─bin(bitSlice('Hello', 1, 2))─┐
|
||||
│ 0100100001100101011011000110110001101111 │ 01000000 │
|
||||
└──────────────────────────────────────────┴──────────────────────────────┘
|
||||
┌─bin('Hello')─────────────────────────────┬─bin(bitSlice('Hello', 1, 9))─┐
|
||||
│ 0100100001100101011011000110110001101111 │ 0100100000000000 │
|
||||
└──────────────────────────────────────────┴──────────────────────────────┘
|
||||
┌─bin('Hello')─────────────────────────────┬─bin(bitSlice('Hello', -4, 8))─┐
|
||||
│ 0100100001100101011011000110110001101111 │ 11110000 │
|
||||
└──────────────────────────────────────────┴───────────────────────────────┘
|
||||
```
|
||||
|
||||
## bitTest {#bittest}
|
||||
|
@ -39,6 +39,8 @@ public:
|
||||
|
||||
bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & /*arguments*/) const override { return true; }
|
||||
|
||||
bool useDefaultImplementationForConstants() const override { return true; }
|
||||
|
||||
DataTypePtr getReturnTypeImpl(const DataTypes & arguments) const override
|
||||
{
|
||||
const size_t number_of_arguments = arguments.size();
|
||||
@ -76,62 +78,44 @@ public:
|
||||
ColumnPtr column_start = arguments[1].column;
|
||||
ColumnPtr column_length;
|
||||
|
||||
std::optional<Int64> start_const;
|
||||
std::optional<Int64> length_const;
|
||||
|
||||
if (const auto *column_start_const = checkAndGetColumn<ColumnConst>(column_start.get())) {
|
||||
start_const = column_start_const->getInt(0);
|
||||
}
|
||||
|
||||
if (number_of_arguments == 3)
|
||||
{
|
||||
column_length = arguments[2].column;
|
||||
if (const auto *column_length_const = checkAndGetColumn<ColumnConst>(column_length.get()))
|
||||
length_const = column_length_const->getInt(0);
|
||||
}
|
||||
|
||||
const ColumnConst * column_start_const = checkAndGetColumn<ColumnConst>(column_start.get());
|
||||
const ColumnConst * column_length_const = nullptr;
|
||||
|
||||
if (number_of_arguments == 3)
|
||||
column_length_const = checkAndGetColumn<ColumnConst>(column_length.get());
|
||||
|
||||
Int64 start_value = 0;
|
||||
Int64 length_value = 0;
|
||||
|
||||
if (column_start_const)
|
||||
start_value = column_start_const->getInt(0);
|
||||
if (column_length_const)
|
||||
length_value = column_length_const->getInt(0);
|
||||
|
||||
|
||||
if (const ColumnString * col = checkAndGetColumn<ColumnString>(column_string.get()))
|
||||
return executeForSource(
|
||||
column_start,
|
||||
column_length,
|
||||
column_start_const,
|
||||
column_length_const,
|
||||
start_value,
|
||||
length_value,
|
||||
column_length, start_const, length_const,
|
||||
StringSource(*col),
|
||||
input_rows_count);
|
||||
else if (const ColumnFixedString * col_fixed = checkAndGetColumn<ColumnFixedString>(column_string.get()))
|
||||
return executeForSource(
|
||||
column_start,
|
||||
column_length,
|
||||
column_start_const,
|
||||
column_length_const,
|
||||
start_value,
|
||||
length_value,
|
||||
column_length, start_const, length_const,
|
||||
FixedStringSource(*col_fixed),
|
||||
input_rows_count);
|
||||
else if (const ColumnConst * col_const = checkAndGetColumnConst<ColumnString>(column_string.get()))
|
||||
return executeForSource(
|
||||
column_start,
|
||||
column_length,
|
||||
column_start_const,
|
||||
column_length_const,
|
||||
start_value,
|
||||
length_value,
|
||||
column_length, start_const, length_const,
|
||||
ConstSource<StringSource>(*col_const),
|
||||
input_rows_count);
|
||||
else if (const ColumnConst * col_const_fixed = checkAndGetColumnConst<ColumnFixedString>(column_string.get()))
|
||||
return executeForSource(
|
||||
column_start,
|
||||
column_length,
|
||||
column_start_const,
|
||||
column_length_const,
|
||||
start_value,
|
||||
length_value,
|
||||
column_length, start_const, length_const,
|
||||
ConstSource<FixedStringSource>(*col_const_fixed),
|
||||
input_rows_count);
|
||||
else
|
||||
@ -144,10 +128,8 @@ public:
|
||||
ColumnPtr executeForSource(
|
||||
const ColumnPtr & column_start,
|
||||
const ColumnPtr & column_length,
|
||||
const ColumnConst * column_start_const,
|
||||
const ColumnConst * column_length_const,
|
||||
Int64 start_value,
|
||||
Int64 length_value,
|
||||
std::optional<Int64> start_const,
|
||||
std::optional<Int64> length_const,
|
||||
Source && source,
|
||||
size_t input_rows_count) const
|
||||
{
|
||||
@ -155,14 +137,15 @@ public:
|
||||
|
||||
if (!column_length)
|
||||
{
|
||||
if (column_start_const)
|
||||
if (start_const)
|
||||
{
|
||||
Int64 start_value = start_const.value();
|
||||
if (start_value > 0)
|
||||
bitSliceFromLeftConstantOffsetUnbounded(
|
||||
source, StringSink(*col_res, input_rows_count), static_cast<size_t>(start_value - 1));
|
||||
else if (start_value < 0)
|
||||
bitSliceFromRightConstantOffsetUnbounded(
|
||||
source, StringSink(*col_res, input_rows_count), -static_cast<size_t>(start_value));
|
||||
source, StringSink(*col_res, input_rows_count), static_cast<size_t>(-start_value));
|
||||
else
|
||||
throw Exception("Indices in strings are 1-based", ErrorCodes::ZERO_ARRAY_OR_TUPLE_INDEX);
|
||||
}
|
||||
@ -171,14 +154,16 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
if (column_start_const && column_length_const)
|
||||
if (start_const && length_const)
|
||||
{
|
||||
Int64 start_value = start_const.value();
|
||||
Int64 length_value = length_const.value();
|
||||
if (start_value > 0)
|
||||
bitSliceFromLeftConstantOffsetBounded(
|
||||
source, StringSink(*col_res, input_rows_count), static_cast<size_t>(start_value - 1), length_value);
|
||||
else if (start_value < 0)
|
||||
bitSliceFromRightConstantOffsetBounded(
|
||||
source, StringSink(*col_res, input_rows_count), -static_cast<size_t>(start_value), length_value);
|
||||
source, StringSink(*col_res, input_rows_count), static_cast<size_t>(-start_value), length_value);
|
||||
else
|
||||
throw Exception("Indices in strings are 1-based", ErrorCodes::ZERO_ARRAY_OR_TUPLE_INDEX);
|
||||
}
|
||||
@ -265,16 +250,10 @@ public:
|
||||
template <class Source>
|
||||
void bitSliceDynamicOffsetUnbounded(Source && src, StringSink && sink, const IColumn & offset_column) const
|
||||
{
|
||||
const bool is_null = offset_column.onlyNull();
|
||||
const auto * nullable = typeid_cast<const ColumnNullable *>(&offset_column);
|
||||
const ColumnUInt8::Container * null_map = nullable ? &nullable->getNullMapData() : nullptr;
|
||||
const IColumn * nested_column = nullable ? &nullable->getNestedColumn() : &offset_column;
|
||||
|
||||
while (!src.isEnd())
|
||||
{
|
||||
auto row_num = src.rowNum();
|
||||
bool has_offset = !is_null && (null_map && (*null_map)[row_num]);
|
||||
Int64 start = has_offset ? nested_column->getInt(row_num) : 1;
|
||||
Int64 start = offset_column.getInt(row_num);
|
||||
if (start != 0)
|
||||
{
|
||||
typename std::decay_t<Source>::Slice slice;
|
||||
@ -390,36 +369,21 @@ public:
|
||||
template <class Source>
|
||||
void bitSliceDynamicOffsetBounded(Source && src, StringSink && sink, const IColumn & offset_column, const IColumn & length_column) const
|
||||
{
|
||||
const bool is_offset_null = offset_column.onlyNull();
|
||||
const auto * offset_nullable = typeid_cast<const ColumnNullable *>(&offset_column);
|
||||
const ColumnUInt8::Container * offset_null_map = offset_nullable ? &offset_nullable->getNullMapData() : nullptr;
|
||||
const IColumn * offset_nested_column = offset_nullable ? &offset_nullable->getNestedColumn() : &offset_column;
|
||||
|
||||
const bool is_length_null = length_column.onlyNull();
|
||||
const auto * length_nullable = typeid_cast<const ColumnNullable *>(&length_column);
|
||||
const ColumnUInt8::Container * length_null_map = length_nullable ? &length_nullable->getNullMapData() : nullptr;
|
||||
const IColumn * length_nested_column = length_nullable ? &length_nullable->getNestedColumn() : &length_column;
|
||||
|
||||
|
||||
while (!src.isEnd())
|
||||
{
|
||||
size_t row_num = src.rowNum();
|
||||
bool has_offset = !is_offset_null && !(offset_null_map && (*offset_null_map)[row_num]);
|
||||
bool has_length = !is_length_null && !(length_null_map && (*length_null_map)[row_num]);
|
||||
Int64 start = has_offset ? offset_nested_column->getInt(row_num) : 1;
|
||||
Int64 length = has_length ? length_nested_column->getInt(row_num) : static_cast<Int64>(src.getElementSize());
|
||||
Int64 start = offset_column.getInt(row_num);
|
||||
Int64 length = length_column.getInt(row_num);
|
||||
|
||||
if (start && length)
|
||||
{
|
||||
bool left_offset = start > 0;
|
||||
size_t offset = left_offset ? start - 1 : -start;
|
||||
size_t size = src.getElementSize();
|
||||
|
||||
size_t offset_byte;
|
||||
size_t offset_bit;
|
||||
size_t shift_bit;
|
||||
size_t length_byte;
|
||||
size_t over_bit;
|
||||
size_t size = src.getElementSize();
|
||||
|
||||
if (left_offset)
|
||||
{
|
||||
offset_byte = offset / word_size;
|
||||
@ -437,6 +401,9 @@ public:
|
||||
}
|
||||
|
||||
ssize_t remain_byte = left_offset ? size - offset_byte : offset_byte;
|
||||
|
||||
size_t length_byte;
|
||||
size_t over_bit;
|
||||
if (length > 0)
|
||||
{
|
||||
length_byte = (length + offset_bit) / word_size;
|
||||
@ -459,7 +426,6 @@ public:
|
||||
writeSliceWithLeftShift(slice, sink, shift_bit, abandon_last_bit);
|
||||
}
|
||||
|
||||
|
||||
sink.next();
|
||||
src.next();
|
||||
}
|
||||
|
@ -1,163 +1,244 @@
|
||||
Const Offset
|
||||
1 01001000011001010110110001101100011011110000000000000000000000000000000000000000 01001000011001010110110001101100011011110000000000000000000000000000000000000000
|
||||
2 1001000011001010110110001101100011011110000000000000000000000000000000000000000 10010000110010101101100011011000110111100000000000000000000000000000000000000000
|
||||
3 001000011001010110110001101100011011110000000000000000000000000000000000000000 00100001100101011011000110110001101111000000000000000000000000000000000000000000
|
||||
4 01000011001010110110001101100011011110000000000000000000000000000000000000000 01000011001010110110001101100011011110000000000000000000000000000000000000000000
|
||||
5 1000011001010110110001101100011011110000000000000000000000000000000000000000 10000110010101101100011011000110111100000000000000000000000000000000000000000000
|
||||
6 000011001010110110001101100011011110000000000000000000000000000000000000000 00001100101011011000110110001101111000000000000000000000000000000000000000000000
|
||||
7 00011001010110110001101100011011110000000000000000000000000000000000000000 00011001010110110001101100011011110000000000000000000000000000000000000000000000
|
||||
8 0011001010110110001101100011011110000000000000000000000000000000000000000 00110010101101100011011000110111100000000000000000000000000000000000000000000000
|
||||
9 011001010110110001101100011011110000000000000000000000000000000000000000 011001010110110001101100011011110000000000000000000000000000000000000000
|
||||
10 11001010110110001101100011011110000000000000000000000000000000000000000 110010101101100011011000110111100000000000000000000000000000000000000000
|
||||
11 1001010110110001101100011011110000000000000000000000000000000000000000 100101011011000110110001101111000000000000000000000000000000000000000000
|
||||
12 001010110110001101100011011110000000000000000000000000000000000000000 001010110110001101100011011110000000000000000000000000000000000000000000
|
||||
13 01010110110001101100011011110000000000000000000000000000000000000000 010101101100011011000110111100000000000000000000000000000000000000000000
|
||||
14 1010110110001101100011011110000000000000000000000000000000000000000 101011011000110110001101111000000000000000000000000000000000000000000000
|
||||
15 010110110001101100011011110000000000000000000000000000000000000000 010110110001101100011011110000000000000000000000000000000000000000000000
|
||||
16 10110110001101100011011110000000000000000000000000000000000000000 101101100011011000110111100000000000000000000000000000000000000000000000
|
||||
-1 0 00000000
|
||||
-2 00 00000000
|
||||
-3 000 00000000
|
||||
-4 0000 00000000
|
||||
-5 00000 00000000
|
||||
-6 000000 00000000
|
||||
-7 0000000 00000000
|
||||
-8 00000000 00000000
|
||||
-9 000000000 0000000000000000
|
||||
-10 0000000000 0000000000000000
|
||||
-11 00000000000 0000000000000000
|
||||
-12 000000000000 0000000000000000
|
||||
-13 0000000000000 0000000000000000
|
||||
-14 00000000000000 0000000000000000
|
||||
-15 000000000000000 0000000000000000
|
||||
-16 0000000000000000 0000000000000000
|
||||
1 Hello\0 010010000110010101101100011011000110111100000000 010010000110010101101100011011000110111100000000
|
||||
2 Hello\0 10010000110010101101100011011000110111100000000 100100001100101011011000110110001101111000000000
|
||||
3 Hello\0 0010000110010101101100011011000110111100000000 001000011001010110110001101100011011110000000000
|
||||
4 Hello\0 010000110010101101100011011000110111100000000 010000110010101101100011011000110111100000000000
|
||||
5 Hello\0 10000110010101101100011011000110111100000000 100001100101011011000110110001101111000000000000
|
||||
6 Hello\0 0000110010101101100011011000110111100000000 000011001010110110001101100011011110000000000000
|
||||
7 Hello\0 000110010101101100011011000110111100000000 000110010101101100011011000110111100000000000000
|
||||
8 Hello\0 00110010101101100011011000110111100000000 001100101011011000110110001101111000000000000000
|
||||
9 Hello\0 0110010101101100011011000110111100000000 0110010101101100011011000110111100000000
|
||||
10 Hello\0 110010101101100011011000110111100000000 1100101011011000110110001101111000000000
|
||||
11 Hello\0 10010101101100011011000110111100000000 1001010110110001101100011011110000000000
|
||||
12 Hello\0 0010101101100011011000110111100000000 0010101101100011011000110111100000000000
|
||||
13 Hello\0 010101101100011011000110111100000000 0101011011000110110001101111000000000000
|
||||
14 Hello\0 10101101100011011000110111100000000 1010110110001101100011011110000000000000
|
||||
15 Hello\0 0101101100011011000110111100000000 0101101100011011000110111100000000000000
|
||||
16 Hello\0 101101100011011000110111100000000 1011011000110110001101111000000000000000
|
||||
-1 Hello\0 0 00000000
|
||||
-2 Hello\0 00 00000000
|
||||
-3 Hello\0 000 00000000
|
||||
-4 Hello\0 0000 00000000
|
||||
-5 Hello\0 00000 00000000
|
||||
-6 Hello\0 000000 00000000
|
||||
-7 Hello\0 0000000 00000000
|
||||
-8 Hello\0 00000000 00000000
|
||||
-9 Hello\0 100000000 1000000000000000
|
||||
-10 Hello\0 1100000000 1100000000000000
|
||||
-11 Hello\0 11100000000 1110000000000000
|
||||
-12 Hello\0 111100000000 1111000000000000
|
||||
-13 Hello\0 0111100000000 0111100000000000
|
||||
-14 Hello\0 10111100000000 1011110000000000
|
||||
-15 Hello\0 110111100000000 1101111000000000
|
||||
-16 Hello\0 0110111100000000 0110111100000000
|
||||
Const Truncate Offset
|
||||
49 Hello\0
|
||||
-49 Hello\0 010010000110010101101100011011000110111100000000 010010000110010101101100011011000110111100000000
|
||||
Const Nullable Offset
|
||||
1 \N \N \N
|
||||
\N Hello\0 \N \N
|
||||
\N \N \N \N
|
||||
Const Offset, Const Length
|
||||
1 1 0 00000000
|
||||
2 2 10 10000000
|
||||
3 3 001 00100000
|
||||
4 4 0100 01000000
|
||||
5 5 10000 10000000
|
||||
6 6 000011 00001100
|
||||
7 7 0001100 00011000
|
||||
8 8 00110010 00110010
|
||||
9 9 011001010 0110010100000000
|
||||
10 10 1100101011 1100101011000000
|
||||
11 11 10010101101 1001010110100000
|
||||
12 12 001010110110 0010101101100000
|
||||
13 13 0101011011000 0101011011000000
|
||||
14 14 10101101100011 1010110110001100
|
||||
15 15 010110110001101 0101101100011010
|
||||
16 16 1011011000110110 1011011000110110
|
||||
1 -1 0100100001100101011011000110110001101111000000000000000000000000000000000000000 01001000011001010110110001101100011011110000000000000000000000000000000000000000
|
||||
2 -2 10010000110010101101100011011000110111100000000000000000000000000000000000000 10010000110010101101100011011000110111100000000000000000000000000000000000000000
|
||||
3 -3 001000011001010110110001101100011011110000000000000000000000000000000000000 00100001100101011011000110110001101111000000000000000000000000000000000000000000
|
||||
4 -4 0100001100101011011000110110001101111000000000000000000000000000000000000 01000011001010110110001101100011011110000000000000000000000000000000000000000000
|
||||
5 -5 10000110010101101100011011000110111100000000000000000000000000000000000 100001100101011011000110110001101111000000000000000000000000000000000000
|
||||
6 -6 000011001010110110001101100011011110000000000000000000000000000000000 000011001010110110001101100011011110000000000000000000000000000000000000
|
||||
7 -7 0001100101011011000110110001101111000000000000000000000000000000000 000110010101101100011011000110111100000000000000000000000000000000000000
|
||||
8 -8 00110010101101100011011000110111100000000000000000000000000000000 001100101011011000110110001101111000000000000000000000000000000000000000
|
||||
9 -9 011001010110110001101100011011110000000000000000000000000000000 0110010101101100011011000110111100000000000000000000000000000000
|
||||
10 -10 1100101011011000110110001101111000000000000000000000000000000 1100101011011000110110001101111000000000000000000000000000000000
|
||||
11 -11 10010101101100011011000110111100000000000000000000000000000 1001010110110001101100011011110000000000000000000000000000000000
|
||||
12 -12 001010110110001101100011011110000000000000000000000000000 0010101101100011011000110111100000000000000000000000000000000000
|
||||
13 -13 0101011011000110110001101111000000000000000000000000000 01010110110001101100011011110000000000000000000000000000
|
||||
14 -14 10101101100011011000110111100000000000000000000000000 10101101100011011000110111100000000000000000000000000000
|
||||
15 -15 010110110001101100011011110000000000000000000000000 01011011000110110001101111000000000000000000000000000000
|
||||
16 -16 1011011000110110001101111000000000000000000000000 10110110001101100011011110000000000000000000000000000000
|
||||
-1 1 0 00000000
|
||||
-2 2 00 00000000
|
||||
-3 3 000 00000000
|
||||
-4 4 0000 00000000
|
||||
-5 5 00000 00000000
|
||||
-6 6 000000 00000000
|
||||
-7 7 0000000 00000000
|
||||
-8 8 00000000 00000000
|
||||
-9 9 000000000 0000000000000000
|
||||
-10 10 0000000000 0000000000000000
|
||||
-11 11 00000000000 0000000000000000
|
||||
-12 12 000000000000 0000000000000000
|
||||
-13 13 0000000000000 0000000000000000
|
||||
-14 14 00000000000000 0000000000000000
|
||||
-15 15 000000000000000 0000000000000000
|
||||
-16 16 0000000000000000 0000000000000000
|
||||
-1 -16
|
||||
-2 -15
|
||||
-3 -14
|
||||
-4 -13
|
||||
-5 -12
|
||||
-6 -11
|
||||
-7 -10
|
||||
-8 -9
|
||||
-9 -8 0 00000000
|
||||
-10 -7 000 00000000
|
||||
-11 -6 00000 00000000
|
||||
-12 -5 0000000 00000000
|
||||
-13 -4 000000000 0000000000000000
|
||||
-14 -3 00000000000 0000000000000000
|
||||
-15 -2 0000000000000 0000000000000000
|
||||
-16 -1 000000000000000 0000000000000000
|
||||
1 1 Hello\0 0 00000000
|
||||
2 2 Hello\0 10 10000000
|
||||
3 3 Hello\0 001 00100000
|
||||
4 4 Hello\0 0100 01000000
|
||||
5 5 Hello\0 10000 10000000
|
||||
6 6 Hello\0 000011 00001100
|
||||
7 7 Hello\0 0001100 00011000
|
||||
8 8 Hello\0 00110010 00110010
|
||||
9 9 Hello\0 011001010 0110010100000000
|
||||
10 10 Hello\0 1100101011 1100101011000000
|
||||
11 11 Hello\0 10010101101 1001010110100000
|
||||
12 12 Hello\0 001010110110 0010101101100000
|
||||
13 13 Hello\0 0101011011000 0101011011000000
|
||||
14 14 Hello\0 10101101100011 1010110110001100
|
||||
15 15 Hello\0 010110110001101 0101101100011010
|
||||
16 16 Hello\0 1011011000110110 1011011000110110
|
||||
1 -1 Hello\0 01001000011001010110110001101100011011110000000 010010000110010101101100011011000110111100000000
|
||||
2 -2 Hello\0 100100001100101011011000110110001101111000000 100100001100101011011000110110001101111000000000
|
||||
3 -3 Hello\0 0010000110010101101100011011000110111100000 001000011001010110110001101100011011110000000000
|
||||
4 -4 Hello\0 01000011001010110110001101100011011110000 010000110010101101100011011000110111100000000000
|
||||
5 -5 Hello\0 100001100101011011000110110001101111000 1000011001010110110001101100011011110000
|
||||
6 -6 Hello\0 0000110010101101100011011000110111100 0000110010101101100011011000110111100000
|
||||
7 -7 Hello\0 00011001010110110001101100011011110 0001100101011011000110110001101111000000
|
||||
8 -8 Hello\0 001100101011011000110110001101111 0011001010110110001101100011011110000000
|
||||
9 -9 Hello\0 0110010101101100011011000110111 01100101011011000110110001101110
|
||||
10 -10 Hello\0 11001010110110001101100011011 11001010110110001101100011011000
|
||||
11 -11 Hello\0 100101011011000110110001101 10010101101100011011000110100000
|
||||
12 -12 Hello\0 0010101101100011011000110 00101011011000110110001100000000
|
||||
13 -13 Hello\0 01010110110001101100011 010101101100011011000110
|
||||
14 -14 Hello\0 101011011000110110001 101011011000110110001000
|
||||
15 -15 Hello\0 0101101100011011000 010110110001101100000000
|
||||
16 -16 Hello\0 10110110001101100 101101100011011000000000
|
||||
-1 1 Hello\0 0 00000000
|
||||
-2 2 Hello\0 00 00000000
|
||||
-3 3 Hello\0 000 00000000
|
||||
-4 4 Hello\0 0000 00000000
|
||||
-5 5 Hello\0 00000 00000000
|
||||
-6 6 Hello\0 000000 00000000
|
||||
-7 7 Hello\0 0000000 00000000
|
||||
-8 8 Hello\0 00000000 00000000
|
||||
-9 9 Hello\0 100000000 1000000000000000
|
||||
-10 10 Hello\0 1100000000 1100000000000000
|
||||
-11 11 Hello\0 11100000000 1110000000000000
|
||||
-12 12 Hello\0 111100000000 1111000000000000
|
||||
-13 13 Hello\0 0111100000000 0111100000000000
|
||||
-14 14 Hello\0 10111100000000 1011110000000000
|
||||
-15 15 Hello\0 110111100000000 1101111000000000
|
||||
-16 16 Hello\0 0110111100000000 0110111100000000
|
||||
-1 -16 Hello\0
|
||||
-2 -15 Hello\0
|
||||
-3 -14 Hello\0
|
||||
-4 -13 Hello\0
|
||||
-5 -12 Hello\0
|
||||
-6 -11 Hello\0
|
||||
-7 -10 Hello\0
|
||||
-8 -9 Hello\0
|
||||
-9 -8 Hello\0 1 10000000
|
||||
-10 -7 Hello\0 110 11000000
|
||||
-11 -6 Hello\0 11100 11100000
|
||||
-12 -5 Hello\0 1111000 11110000
|
||||
-13 -4 Hello\0 011110000 0111100000000000
|
||||
-14 -3 Hello\0 10111100000 1011110000000000
|
||||
-15 -2 Hello\0 1101111000000 1101111000000000
|
||||
-16 -1 Hello\0 011011110000000 0110111100000000
|
||||
Const Truncate Offset, Const Truncate Length
|
||||
36 16 Hello\0 0111100000000 0111100000000000
|
||||
49 1 Hello\0
|
||||
-52 -44 Hello\0 0100 01000000
|
||||
-49 -48 Hello\0
|
||||
-49 49 Hello\0 010010000110010101101100011011000110111100000000 010010000110010101101100011011000110111100000000
|
||||
Const Nullable Offset, Const Nullable Length
|
||||
1 1 \N \N \N
|
||||
\N 1 Hello\0 \N \N
|
||||
1 \N Hello\0 \N \N
|
||||
\N \N \N \N \N
|
||||
Dynamic Offset, Dynamic Length
|
||||
0 0
|
||||
1 1 0 00000000
|
||||
2 2 10 10000000
|
||||
3 3 001 00100000
|
||||
4 4 0100 01000000
|
||||
5 5 10000 10000000
|
||||
6 6 000011 00001100
|
||||
7 7 0001100 00011000
|
||||
8 8 00110010 00110010
|
||||
9 9 011001010 0110010100000000
|
||||
10 10 1100101011 1100101011000000
|
||||
11 11 10010101101 1001010110100000
|
||||
12 12 001010110110 0010101101100000
|
||||
13 13 0101011011000 0101011011000000
|
||||
14 14 10101101100011 1010110110001100
|
||||
15 15 010110110001101 0101101100011010
|
||||
0 0
|
||||
1 -1 0100100001100101011011000110110001101111000000000000000000000000000000000000000 01001000011001010110110001101100011011110000000000000000000000000000000000000000
|
||||
2 -2 10010000110010101101100011011000110111100000000000000000000000000000000000000 10010000110010101101100011011000110111100000000000000000000000000000000000000000
|
||||
3 -3 001000011001010110110001101100011011110000000000000000000000000000000000000 00100001100101011011000110110001101111000000000000000000000000000000000000000000
|
||||
4 -4 0100001100101011011000110110001101111000000000000000000000000000000000000 01000011001010110110001101100011011110000000000000000000000000000000000000000000
|
||||
5 -5 10000110010101101100011011000110111100000000000000000000000000000000000 100001100101011011000110110001101111000000000000000000000000000000000000
|
||||
6 -6 000011001010110110001101100011011110000000000000000000000000000000000 000011001010110110001101100011011110000000000000000000000000000000000000
|
||||
7 -7 0001100101011011000110110001101111000000000000000000000000000000000 000110010101101100011011000110111100000000000000000000000000000000000000
|
||||
8 -8 00110010101101100011011000110111100000000000000000000000000000000 001100101011011000110110001101111000000000000000000000000000000000000000
|
||||
9 -9 011001010110110001101100011011110000000000000000000000000000000 0110010101101100011011000110111100000000000000000000000000000000
|
||||
10 -10 1100101011011000110110001101111000000000000000000000000000000 1100101011011000110110001101111000000000000000000000000000000000
|
||||
11 -11 10010101101100011011000110111100000000000000000000000000000 1001010110110001101100011011110000000000000000000000000000000000
|
||||
12 -12 001010110110001101100011011110000000000000000000000000000 0010101101100011011000110111100000000000000000000000000000000000
|
||||
13 -13 0101011011000110110001101111000000000000000000000000000 01010110110001101100011011110000000000000000000000000000
|
||||
14 -14 10101101100011011000110111100000000000000000000000000 10101101100011011000110111100000000000000000000000000000
|
||||
15 -15 010110110001101100011011110000000000000000000000000 01011011000110110001101111000000000000000000000000000000
|
||||
0 -16
|
||||
-1 -15
|
||||
-2 -14
|
||||
-3 -13
|
||||
-4 -12
|
||||
-5 -11
|
||||
-6 -10
|
||||
-7 -9
|
||||
-8 -8
|
||||
-9 -7 00 00000000
|
||||
-10 -6 0000 00000000
|
||||
-11 -5 000000 00000000
|
||||
-12 -4 00000000 00000000
|
||||
-13 -3 0000000000 0000000000000000
|
||||
-14 -2 000000000000 0000000000000000
|
||||
-15 -1 00000000000000 0000000000000000
|
||||
0 0
|
||||
-1 1 0 00000000
|
||||
-2 2 00 00000000
|
||||
-3 3 000 00000000
|
||||
-4 4 0000 00000000
|
||||
-5 5 00000 00000000
|
||||
-6 6 000000 00000000
|
||||
-7 7 0000000 00000000
|
||||
-8 8 00000000 00000000
|
||||
-9 9 000000000 0000000000000000
|
||||
-10 10 0000000000 0000000000000000
|
||||
-11 11 00000000000 0000000000000000
|
||||
-12 12 000000000000 0000000000000000
|
||||
-13 13 0000000000000 0000000000000000
|
||||
-14 14 00000000000000 0000000000000000
|
||||
-15 15 000000000000000 0000000000000000
|
||||
0 0 Hello\0
|
||||
1 1 Hello\0 0 00000000
|
||||
2 2 Hello\0 10 10000000
|
||||
3 3 Hello\0 001 00100000
|
||||
4 4 Hello\0 0100 01000000
|
||||
5 5 Hello\0 10000 10000000
|
||||
6 6 Hello\0 000011 00001100
|
||||
7 7 Hello\0 0001100 00011000
|
||||
8 8 Hello\0 00110010 00110010
|
||||
9 9 Hello\0 011001010 0110010100000000
|
||||
10 10 Hello\0 1100101011 1100101011000000
|
||||
11 11 Hello\0 10010101101 1001010110100000
|
||||
12 12 Hello\0 001010110110 0010101101100000
|
||||
13 13 Hello\0 0101011011000 0101011011000000
|
||||
14 14 Hello\0 10101101100011 1010110110001100
|
||||
15 15 Hello\0 010110110001101 0101101100011010
|
||||
0 0 Hello\0
|
||||
1 -1 Hello\0 01001000011001010110110001101100011011110000000 010010000110010101101100011011000110111100000000
|
||||
2 -2 Hello\0 100100001100101011011000110110001101111000000 100100001100101011011000110110001101111000000000
|
||||
3 -3 Hello\0 0010000110010101101100011011000110111100000 001000011001010110110001101100011011110000000000
|
||||
4 -4 Hello\0 01000011001010110110001101100011011110000 010000110010101101100011011000110111100000000000
|
||||
5 -5 Hello\0 100001100101011011000110110001101111000 1000011001010110110001101100011011110000
|
||||
6 -6 Hello\0 0000110010101101100011011000110111100 0000110010101101100011011000110111100000
|
||||
7 -7 Hello\0 00011001010110110001101100011011110 0001100101011011000110110001101111000000
|
||||
8 -8 Hello\0 001100101011011000110110001101111 0011001010110110001101100011011110000000
|
||||
9 -9 Hello\0 0110010101101100011011000110111 01100101011011000110110001101110
|
||||
10 -10 Hello\0 11001010110110001101100011011 11001010110110001101100011011000
|
||||
11 -11 Hello\0 100101011011000110110001101 10010101101100011011000110100000
|
||||
12 -12 Hello\0 0010101101100011011000110 00101011011000110110001100000000
|
||||
13 -13 Hello\0 01010110110001101100011 010101101100011011000110
|
||||
14 -14 Hello\0 101011011000110110001 101011011000110110001000
|
||||
15 -15 Hello\0 0101101100011011000 010110110001101100000000
|
||||
0 -16 Hello\0
|
||||
-1 -15 Hello\0
|
||||
-2 -14 Hello\0
|
||||
-3 -13 Hello\0
|
||||
-4 -12 Hello\0
|
||||
-5 -11 Hello\0
|
||||
-6 -10 Hello\0
|
||||
-7 -9 Hello\0
|
||||
-8 -8 Hello\0
|
||||
-9 -7 Hello\0 10 10000000
|
||||
-10 -6 Hello\0 1100 11000000
|
||||
-11 -5 Hello\0 111000 11100000
|
||||
-12 -4 Hello\0 11110000 11110000
|
||||
-13 -3 Hello\0 0111100000 0111100000000000
|
||||
-14 -2 Hello\0 101111000000 1011110000000000
|
||||
-15 -1 Hello\0 11011110000000 1101111000000000
|
||||
0 0 Hello\0
|
||||
-1 1 Hello\0 0 00000000
|
||||
-2 2 Hello\0 00 00000000
|
||||
-3 3 Hello\0 000 00000000
|
||||
-4 4 Hello\0 0000 00000000
|
||||
-5 5 Hello\0 00000 00000000
|
||||
-6 6 Hello\0 000000 00000000
|
||||
-7 7 Hello\0 0000000 00000000
|
||||
-8 8 Hello\0 00000000 00000000
|
||||
-9 9 Hello\0 100000000 1000000000000000
|
||||
-10 10 Hello\0 1100000000 1100000000000000
|
||||
-11 11 Hello\0 11100000000 1110000000000000
|
||||
-12 12 Hello\0 111100000000 1111000000000000
|
||||
-13 13 Hello\0 0111100000000 0111100000000000
|
||||
-14 14 Hello\0 10111100000000 1011110000000000
|
||||
-15 15 Hello\0 110111100000000 1101111000000000
|
||||
Dynamic Truncate Offset, Dynamic Truncate Length
|
||||
-8 8 Hello\0 00000000 00000000
|
||||
-7 8 Hello\0 0000000 00000000
|
||||
-6 8 Hello\0 000000 00000000
|
||||
-5 8 Hello\0 00000 00000000
|
||||
-4 8 Hello\0 0000 00000000
|
||||
-3 8 Hello\0 000 00000000
|
||||
-2 8 Hello\0 00 00000000
|
||||
-1 8 Hello\0 0 00000000
|
||||
0 8 Hello\0
|
||||
-4 0 Hello\0
|
||||
-4 1 Hello\0 0 00000000
|
||||
-4 2 Hello\0 00 00000000
|
||||
-4 3 Hello\0 000 00000000
|
||||
-4 4 Hello\0 0000 00000000
|
||||
-4 5 Hello\0 0000 00000000
|
||||
-4 6 Hello\0 0000 00000000
|
||||
-4 7 Hello\0 0000 00000000
|
||||
-4 8 Hello\0 0000 00000000
|
||||
-44 8 Hello\0 10000110 10000110
|
||||
-45 8 Hello\0 01000011 01000011
|
||||
-46 8 Hello\0 00100001 00100001
|
||||
-47 8 Hello\0 10010000 10010000
|
||||
-48 8 Hello\0 01001000 01001000
|
||||
-49 8 Hello\0 0100100 01001000
|
||||
-50 8 Hello\0 010010 01001000
|
||||
-51 8 Hello\0 01001 01001000
|
||||
-52 8 Hello\0 0100 01000000
|
||||
-52 0 Hello\0
|
||||
-52 1 Hello\0
|
||||
-52 2 Hello\0
|
||||
-52 3 Hello\0
|
||||
-52 4 Hello\0
|
||||
-52 5 Hello\0 0 00000000
|
||||
-52 6 Hello\0 01 01000000
|
||||
-52 7 Hello\0 010 01000000
|
||||
-52 8 Hello\0 0100 01000000
|
||||
-52 48 Hello\0 01001000011001010110110001101100011011110000 010010000110010101101100011011000110111100000000
|
||||
-52 49 Hello\0 010010000110010101101100011011000110111100000 010010000110010101101100011011000110111100000000
|
||||
-52 50 Hello\0 0100100001100101011011000110110001101111000000 010010000110010101101100011011000110111100000000
|
||||
-52 51 Hello\0 01001000011001010110110001101100011011110000000 010010000110010101101100011011000110111100000000
|
||||
-52 52 Hello\0 010010000110010101101100011011000110111100000000 010010000110010101101100011011000110111100000000
|
||||
-52 53 Hello\0 010010000110010101101100011011000110111100000000 010010000110010101101100011011000110111100000000
|
||||
-52 54 Hello\0 010010000110010101101100011011000110111100000000 010010000110010101101100011011000110111100000000
|
||||
-52 55 Hello\0 010010000110010101101100011011000110111100000000 010010000110010101101100011011000110111100000000
|
||||
-52 56 Hello\0 010010000110010101101100011011000110111100000000 010010000110010101101100011011000110111100000000
|
||||
Dynamic Nullable Offset, Dynamic Nullable Length
|
||||
0 0 Hello\0
|
||||
\N 1 Hello\0 \N \N
|
||||
2 \N Hello\0 \N \N
|
||||
3 3 \N \N \N
|
||||
4 4 Hello\0 0100 01000000
|
||||
\N 5 Hello\0 \N \N
|
||||
6 \N Hello\0 \N \N
|
||||
\N \N \N \N \N
|
||||
8 8 Hello\0 00110010 00110010
|
||||
\N 9 Hello\0 \N \N
|
||||
10 \N Hello\0 \N \N
|
||||
11 11 \N \N \N
|
||||
12 12 Hello\0 001010110110 0010101101100000
|
||||
\N 13 Hello\0 \N \N
|
||||
14 \N Hello\0 \N \N
|
||||
\N \N \N \N \N
|
||||
|
@ -1,111 +1,143 @@
|
||||
SELECT 'Const Offset';
|
||||
select 1, subString(bin(toFixedString('Hello', 10)), 1), bin(bitSlice(toFixedString('Hello', 10), 1));
|
||||
select 2, subString(bin(toFixedString('Hello', 10)), 2), bin(bitSlice(toFixedString('Hello', 10), 2));
|
||||
select 3, subString(bin(toFixedString('Hello', 10)), 3), bin(bitSlice(toFixedString('Hello', 10), 3));
|
||||
select 4, subString(bin(toFixedString('Hello', 10)), 4), bin(bitSlice(toFixedString('Hello', 10), 4));
|
||||
select 5, subString(bin(toFixedString('Hello', 10)), 5), bin(bitSlice(toFixedString('Hello', 10), 5));
|
||||
select 6, subString(bin(toFixedString('Hello', 10)), 6), bin(bitSlice(toFixedString('Hello', 10), 6));
|
||||
select 7, subString(bin(toFixedString('Hello', 10)), 7), bin(bitSlice(toFixedString('Hello', 10), 7));
|
||||
select 8, subString(bin(toFixedString('Hello', 10)), 8), bin(bitSlice(toFixedString('Hello', 10), 8));
|
||||
select 9, subString(bin(toFixedString('Hello', 10)), 9), bin(bitSlice(toFixedString('Hello', 10), 9));
|
||||
select 10, subString(bin(toFixedString('Hello', 10)), 10), bin(bitSlice(toFixedString('Hello', 10), 10));
|
||||
select 11, subString(bin(toFixedString('Hello', 10)), 11), bin(bitSlice(toFixedString('Hello', 10), 11));
|
||||
select 12, subString(bin(toFixedString('Hello', 10)), 12), bin(bitSlice(toFixedString('Hello', 10), 12));
|
||||
select 13, subString(bin(toFixedString('Hello', 10)), 13), bin(bitSlice(toFixedString('Hello', 10), 13));
|
||||
select 14, subString(bin(toFixedString('Hello', 10)), 14), bin(bitSlice(toFixedString('Hello', 10), 14));
|
||||
select 15, subString(bin(toFixedString('Hello', 10)), 15), bin(bitSlice(toFixedString('Hello', 10), 15));
|
||||
select 16, subString(bin(toFixedString('Hello', 10)), 16), bin(bitSlice(toFixedString('Hello', 10), 16));
|
||||
select 1 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 2 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 3 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 4 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 5 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 6 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 7 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 8 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 9 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 10 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 11 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 12 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 13 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 14 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 15 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 16 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
|
||||
select -1, subString(bin(toFixedString('Hello', 10)), -1), bin(bitSlice(toFixedString('Hello', 10), -1));
|
||||
select -2, subString(bin(toFixedString('Hello', 10)), -2), bin(bitSlice(toFixedString('Hello', 10), -2));
|
||||
select -3, subString(bin(toFixedString('Hello', 10)), -3), bin(bitSlice(toFixedString('Hello', 10), -3));
|
||||
select -4, subString(bin(toFixedString('Hello', 10)), -4), bin(bitSlice(toFixedString('Hello', 10), -4));
|
||||
select -5, subString(bin(toFixedString('Hello', 10)), -5), bin(bitSlice(toFixedString('Hello', 10), -5));
|
||||
select -6, subString(bin(toFixedString('Hello', 10)), -6), bin(bitSlice(toFixedString('Hello', 10), -6));
|
||||
select -7, subString(bin(toFixedString('Hello', 10)), -7), bin(bitSlice(toFixedString('Hello', 10), -7));
|
||||
select -8, subString(bin(toFixedString('Hello', 10)), -8), bin(bitSlice(toFixedString('Hello', 10), -8));
|
||||
select -9, subString(bin(toFixedString('Hello', 10)), -9), bin(bitSlice(toFixedString('Hello', 10), -9));
|
||||
select -10, subString(bin(toFixedString('Hello', 10)), -10), bin(bitSlice(toFixedString('Hello', 10), -10));
|
||||
select -11, subString(bin(toFixedString('Hello', 10)), -11), bin(bitSlice(toFixedString('Hello', 10), -11));
|
||||
select -12, subString(bin(toFixedString('Hello', 10)), -12), bin(bitSlice(toFixedString('Hello', 10), -12));
|
||||
select -13, subString(bin(toFixedString('Hello', 10)), -13), bin(bitSlice(toFixedString('Hello', 10), -13));
|
||||
select -14, subString(bin(toFixedString('Hello', 10)), -14), bin(bitSlice(toFixedString('Hello', 10), -14));
|
||||
select -15, subString(bin(toFixedString('Hello', 10)), -15), bin(bitSlice(toFixedString('Hello', 10), -15));
|
||||
select -16, subString(bin(toFixedString('Hello', 10)), -16), bin(bitSlice(toFixedString('Hello', 10), -16));
|
||||
select -1 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -2 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -3 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -4 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -5 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -6 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -7 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -8 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -9 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -10 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -11 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -12 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -13 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -14 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -15 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -16 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
|
||||
SELECT 'Const Truncate Offset';
|
||||
select 49 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -49 as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
|
||||
SELECT 'Const Nullable Offset';
|
||||
select 1 as offset, null as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select null as offset, toFixedString('Hello', 6) as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select null as offset, null as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
|
||||
SELECT 'Const Offset, Const Length';
|
||||
select 1, 1, subString(bin(toFixedString('Hello', 10)), 1, 1), bin(bitSlice(toFixedString('Hello', 10), 1, 1));
|
||||
select 2, 2, subString(bin(toFixedString('Hello', 10)), 2, 2), bin(bitSlice(toFixedString('Hello', 10), 2, 2));
|
||||
select 3, 3, subString(bin(toFixedString('Hello', 10)), 3, 3), bin(bitSlice(toFixedString('Hello', 10), 3, 3));
|
||||
select 4, 4, subString(bin(toFixedString('Hello', 10)), 4, 4), bin(bitSlice(toFixedString('Hello', 10), 4, 4));
|
||||
select 5, 5, subString(bin(toFixedString('Hello', 10)), 5, 5), bin(bitSlice(toFixedString('Hello', 10), 5, 5));
|
||||
select 6, 6, subString(bin(toFixedString('Hello', 10)), 6, 6), bin(bitSlice(toFixedString('Hello', 10), 6, 6));
|
||||
select 7, 7, subString(bin(toFixedString('Hello', 10)), 7, 7), bin(bitSlice(toFixedString('Hello', 10), 7, 7));
|
||||
select 8, 8, subString(bin(toFixedString('Hello', 10)), 8, 8), bin(bitSlice(toFixedString('Hello', 10), 8, 8));
|
||||
select 9, 9, subString(bin(toFixedString('Hello', 10)), 9, 9), bin(bitSlice(toFixedString('Hello', 10), 9, 9));
|
||||
select 10, 10, subString(bin(toFixedString('Hello', 10)), 10, 10), bin(bitSlice(toFixedString('Hello', 10), 10, 10));
|
||||
select 11, 11, subString(bin(toFixedString('Hello', 10)), 11, 11), bin(bitSlice(toFixedString('Hello', 10), 11, 11));
|
||||
select 12, 12, subString(bin(toFixedString('Hello', 10)), 12, 12), bin(bitSlice(toFixedString('Hello', 10), 12, 12));
|
||||
select 13, 13, subString(bin(toFixedString('Hello', 10)), 13, 13), bin(bitSlice(toFixedString('Hello', 10), 13, 13));
|
||||
select 14, 14, subString(bin(toFixedString('Hello', 10)), 14, 14), bin(bitSlice(toFixedString('Hello', 10), 14, 14));
|
||||
select 15, 15, subString(bin(toFixedString('Hello', 10)), 15, 15), bin(bitSlice(toFixedString('Hello', 10), 15, 15));
|
||||
select 16, 16, subString(bin(toFixedString('Hello', 10)), 16, 16), bin(bitSlice(toFixedString('Hello', 10), 16, 16));
|
||||
select 1 as offset, 1 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 2 as offset, 2 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 3 as offset, 3 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 4 as offset, 4 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 5 as offset, 5 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 6 as offset, 6 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 7 as offset, 7 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 8 as offset, 8 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 9 as offset, 9 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 10 as offset, 10 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 11 as offset, 11 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 12 as offset, 12 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 13 as offset, 13 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 14 as offset, 14 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 15 as offset, 15 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 16 as offset, 16 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select 1, -1, subString(bin(toFixedString('Hello', 10)), 1, -1), bin(bitSlice(toFixedString('Hello', 10), 1, -1));
|
||||
select 2, -2, subString(bin(toFixedString('Hello', 10)), 2, -2), bin(bitSlice(toFixedString('Hello', 10), 2, -2));
|
||||
select 3, -3, subString(bin(toFixedString('Hello', 10)), 3, -3), bin(bitSlice(toFixedString('Hello', 10), 3, -3));
|
||||
select 4, -4, subString(bin(toFixedString('Hello', 10)), 4, -4), bin(bitSlice(toFixedString('Hello', 10), 4, -4));
|
||||
select 5, -5, subString(bin(toFixedString('Hello', 10)), 5, -5), bin(bitSlice(toFixedString('Hello', 10), 5, -5));
|
||||
select 6, -6, subString(bin(toFixedString('Hello', 10)), 6, -6), bin(bitSlice(toFixedString('Hello', 10), 6, -6));
|
||||
select 7, -7, subString(bin(toFixedString('Hello', 10)), 7, -7), bin(bitSlice(toFixedString('Hello', 10), 7, -7));
|
||||
select 8, -8, subString(bin(toFixedString('Hello', 10)), 8, -8), bin(bitSlice(toFixedString('Hello', 10), 8, -8));
|
||||
select 9, -9, subString(bin(toFixedString('Hello', 10)), 9, -9), bin(bitSlice(toFixedString('Hello', 10), 9, -9));
|
||||
select 10, -10, subString(bin(toFixedString('Hello', 10)), 10, -10), bin(bitSlice(toFixedString('Hello', 10), 10, -10));
|
||||
select 11, -11, subString(bin(toFixedString('Hello', 10)), 11, -11), bin(bitSlice(toFixedString('Hello', 10), 11, -11));
|
||||
select 12, -12, subString(bin(toFixedString('Hello', 10)), 12, -12), bin(bitSlice(toFixedString('Hello', 10), 12, -12));
|
||||
select 13, -13, subString(bin(toFixedString('Hello', 10)), 13, -13), bin(bitSlice(toFixedString('Hello', 10), 13, -13));
|
||||
select 14, -14, subString(bin(toFixedString('Hello', 10)), 14, -14), bin(bitSlice(toFixedString('Hello', 10), 14, -14));
|
||||
select 15, -15, subString(bin(toFixedString('Hello', 10)), 15, -15), bin(bitSlice(toFixedString('Hello', 10), 15, -15));
|
||||
select 16, -16, subString(bin(toFixedString('Hello', 10)), 16, -16), bin(bitSlice(toFixedString('Hello', 10), 16, -16));
|
||||
select 1 as offset, -1 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 2 as offset, -2 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 3 as offset, -3 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 4 as offset, -4 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 5 as offset, -5 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 6 as offset, -6 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 7 as offset, -7 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 8 as offset, -8 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 9 as offset, -9 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 10 as offset, -10 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 11 as offset, -11 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 12 as offset, -12 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 13 as offset, -13 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 14 as offset, -14 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 15 as offset, -15 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 16 as offset, -16 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select -1, 1, subString(bin(toFixedString('Hello', 10)), -1, 1), bin(bitSlice(toFixedString('Hello', 10), -1, 1));
|
||||
select -2, 2, subString(bin(toFixedString('Hello', 10)), -2, 2), bin(bitSlice(toFixedString('Hello', 10), -2, 2));
|
||||
select -3, 3, subString(bin(toFixedString('Hello', 10)), -3, 3), bin(bitSlice(toFixedString('Hello', 10), -3, 3));
|
||||
select -4, 4, subString(bin(toFixedString('Hello', 10)), -4, 4), bin(bitSlice(toFixedString('Hello', 10), -4, 4));
|
||||
select -5, 5, subString(bin(toFixedString('Hello', 10)), -5, 5), bin(bitSlice(toFixedString('Hello', 10), -5, 5));
|
||||
select -6, 6, subString(bin(toFixedString('Hello', 10)), -6, 6), bin(bitSlice(toFixedString('Hello', 10), -6, 6));
|
||||
select -7, 7, subString(bin(toFixedString('Hello', 10)), -7, 7), bin(bitSlice(toFixedString('Hello', 10), -7, 7));
|
||||
select -8, 8, subString(bin(toFixedString('Hello', 10)), -8, 8), bin(bitSlice(toFixedString('Hello', 10), -8, 8));
|
||||
select -9, 9, subString(bin(toFixedString('Hello', 10)), -9, 9), bin(bitSlice(toFixedString('Hello', 10), -9, 9));
|
||||
select -10, 10, subString(bin(toFixedString('Hello', 10)), -10, 10), bin(bitSlice(toFixedString('Hello', 10), -10, 10));
|
||||
select -11, 11, subString(bin(toFixedString('Hello', 10)), -11, 11), bin(bitSlice(toFixedString('Hello', 10), -11, 11));
|
||||
select -12, 12, subString(bin(toFixedString('Hello', 10)), -12, 12), bin(bitSlice(toFixedString('Hello', 10), -12, 12));
|
||||
select -13, 13, subString(bin(toFixedString('Hello', 10)), -13, 13), bin(bitSlice(toFixedString('Hello', 10), -13, 13));
|
||||
select -14, 14, subString(bin(toFixedString('Hello', 10)), -14, 14), bin(bitSlice(toFixedString('Hello', 10), -14, 14));
|
||||
select -15, 15, subString(bin(toFixedString('Hello', 10)), -15, 15), bin(bitSlice(toFixedString('Hello', 10), -15, 15));
|
||||
select -16, 16, subString(bin(toFixedString('Hello', 10)), -16, 16), bin(bitSlice(toFixedString('Hello', 10), -16, 16));
|
||||
select -1 as offset, 1 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -2 as offset, 2 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -3 as offset, 3 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -4 as offset, 4 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -5 as offset, 5 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -6 as offset, 6 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -7 as offset, 7 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -8 as offset, 8 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -9 as offset, 9 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -10 as offset, 10 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -11 as offset, 11 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -12 as offset, 12 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -13 as offset, 13 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -14 as offset, 14 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -15 as offset, 15 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -16 as offset, 16 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select -1, -16, subString(bin(toFixedString('Hello', 10)), -1, -16), bin(bitSlice(toFixedString('Hello', 10), -1, -16));
|
||||
select -2, -15, subString(bin(toFixedString('Hello', 10)), -2, -15), bin(bitSlice(toFixedString('Hello', 10), -2, -15));
|
||||
select -3, -14, subString(bin(toFixedString('Hello', 10)), -3, -14), bin(bitSlice(toFixedString('Hello', 10), -3, -14));
|
||||
select -4, -13, subString(bin(toFixedString('Hello', 10)), -4, -13), bin(bitSlice(toFixedString('Hello', 10), -4, -13));
|
||||
select -5, -12, subString(bin(toFixedString('Hello', 10)), -5, -12), bin(bitSlice(toFixedString('Hello', 10), -5, -12));
|
||||
select -6, -11, subString(bin(toFixedString('Hello', 10)), -6, -11), bin(bitSlice(toFixedString('Hello', 10), -6, -11));
|
||||
select -7, -10, subString(bin(toFixedString('Hello', 10)), -7, -10), bin(bitSlice(toFixedString('Hello', 10), -7, -10));
|
||||
select -8, -9, subString(bin(toFixedString('Hello', 10)), -8, -9), bin(bitSlice(toFixedString('Hello', 10), -8, -9));
|
||||
select -9, -8, subString(bin(toFixedString('Hello', 10)), -9, -8), bin(bitSlice(toFixedString('Hello', 10), -9, -8));
|
||||
select -10, -7, subString(bin(toFixedString('Hello', 10)), -10, -7), bin(bitSlice(toFixedString('Hello', 10), -10, -7));
|
||||
select -11, -6, subString(bin(toFixedString('Hello', 10)), -11, -6), bin(bitSlice(toFixedString('Hello', 10), -11, -6));
|
||||
select -12, -5, subString(bin(toFixedString('Hello', 10)), -12, -5), bin(bitSlice(toFixedString('Hello', 10), -12, -5));
|
||||
select -13, -4, subString(bin(toFixedString('Hello', 10)), -13, -4), bin(bitSlice(toFixedString('Hello', 10), -13, -4));
|
||||
select -14, -3, subString(bin(toFixedString('Hello', 10)), -14, -3), bin(bitSlice(toFixedString('Hello', 10), -14, -3));
|
||||
select -15, -2, subString(bin(toFixedString('Hello', 10)), -15, -2), bin(bitSlice(toFixedString('Hello', 10), -15, -2));
|
||||
select -16, -1, subString(bin(toFixedString('Hello', 10)), -16, -1), bin(bitSlice(toFixedString('Hello', 10), -16, -1));
|
||||
select -1 as offset, -16 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -2 as offset, -15 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -3 as offset, -14 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -4 as offset, -13 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -5 as offset, -12 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -6 as offset, -11 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -7 as offset, -10 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -8 as offset, -9 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -9 as offset, -8 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -10 as offset, -7 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -11 as offset, -6 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -12 as offset, -5 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -13 as offset, -4 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -14 as offset, -3 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -15 as offset, -2 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -16 as offset, -1 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select 'Const Truncate Offset, Const Truncate Length';
|
||||
select 36 as offset, 16 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 49 as offset, 1 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -52 as offset, -44 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -49 as offset, -48 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -49 as offset, 49 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select 'Const Nullable Offset, Const Nullable Length';
|
||||
select 1 as offset, 1 as length, null as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length));
|
||||
select null as offset, 1 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 1 as offset, null as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length));
|
||||
select null as offset, null as length, null as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select 'Dynamic Offset, Dynamic Length';
|
||||
select number as offset, number as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(16);
|
||||
select number as offset, -number as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(16);
|
||||
select -number as offset, -16+number as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(16);
|
||||
select -number as offset, number as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(16);
|
||||
|
||||
select number, number, subString(bin(toFixedString('Hello', 10)), number, number), bin(bitSlice(toFixedString('Hello', 10), number, number)) from numbers(16);
|
||||
select number, -number, subString(bin(toFixedString('Hello', 10)), number, -number), bin(bitSlice(toFixedString('Hello', 10), number, -number)) from numbers(16);
|
||||
select -number, -16+number, subString(bin(toFixedString('Hello', 10)), -number, -16+number), bin(bitSlice(toFixedString('Hello', 10), -number, -16+number)) from numbers(16);
|
||||
select -number, number, subString(bin(toFixedString('Hello', 10)), -number, number), bin(bitSlice(toFixedString('Hello', 10), -number, number)) from numbers(16);
|
||||
select 'Dynamic Truncate Offset, Dynamic Truncate Length';
|
||||
select number-8 as offset, 8 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
select -4 as offset, number as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
select -44-number as offset, 8 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
select -52 as offset, number as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
select -52 as offset, number + 48 as length, toFixedString('Hello', 6) as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
|
||||
select 'Dynamic Nullable Offset, Dynamic Nullable Length';
|
||||
select if(number%4 ==1 or number%8==7, null, number) as offset, if(number%4==2 or number%8==7, null, number) as length,if(number%4 ==3, null, toFixedString('Hello', 6)) as s,
|
||||
subString(bin(s), offset, length), bin(bitSlice(s, offset , length))
|
||||
from numbers(16);
|
||||
|
@ -1,163 +1,244 @@
|
||||
Const Offset
|
||||
1 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
2 100100001100101011011000110110001101111 1001000011001010110110001101100011011110
|
||||
3 00100001100101011011000110110001101111 0010000110010101101100011011000110111100
|
||||
4 0100001100101011011000110110001101111 0100001100101011011000110110001101111000
|
||||
5 100001100101011011000110110001101111 1000011001010110110001101100011011110000
|
||||
6 00001100101011011000110110001101111 0000110010101101100011011000110111100000
|
||||
7 0001100101011011000110110001101111 0001100101011011000110110001101111000000
|
||||
8 001100101011011000110110001101111 0011001010110110001101100011011110000000
|
||||
9 01100101011011000110110001101111 01100101011011000110110001101111
|
||||
10 1100101011011000110110001101111 11001010110110001101100011011110
|
||||
11 100101011011000110110001101111 10010101101100011011000110111100
|
||||
12 00101011011000110110001101111 00101011011000110110001101111000
|
||||
13 0101011011000110110001101111 01010110110001101100011011110000
|
||||
14 101011011000110110001101111 10101101100011011000110111100000
|
||||
15 01011011000110110001101111 01011011000110110001101111000000
|
||||
16 1011011000110110001101111 10110110001101100011011110000000
|
||||
-1 1 10000000
|
||||
-2 11 11000000
|
||||
-3 111 11100000
|
||||
-4 1111 11110000
|
||||
-5 01111 01111000
|
||||
-6 101111 10111100
|
||||
-7 1101111 11011110
|
||||
-8 01101111 01101111
|
||||
-9 001101111 0011011110000000
|
||||
-10 0001101111 0001101111000000
|
||||
-11 10001101111 1000110111100000
|
||||
-12 110001101111 1100011011110000
|
||||
-13 0110001101111 0110001101111000
|
||||
-14 10110001101111 1011000110111100
|
||||
-15 110110001101111 1101100011011110
|
||||
-16 0110110001101111 0110110001101111
|
||||
1 Hello 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
2 Hello 100100001100101011011000110110001101111 1001000011001010110110001101100011011110
|
||||
3 Hello 00100001100101011011000110110001101111 0010000110010101101100011011000110111100
|
||||
4 Hello 0100001100101011011000110110001101111 0100001100101011011000110110001101111000
|
||||
5 Hello 100001100101011011000110110001101111 1000011001010110110001101100011011110000
|
||||
6 Hello 00001100101011011000110110001101111 0000110010101101100011011000110111100000
|
||||
7 Hello 0001100101011011000110110001101111 0001100101011011000110110001101111000000
|
||||
8 Hello 001100101011011000110110001101111 0011001010110110001101100011011110000000
|
||||
9 Hello 01100101011011000110110001101111 01100101011011000110110001101111
|
||||
10 Hello 1100101011011000110110001101111 11001010110110001101100011011110
|
||||
11 Hello 100101011011000110110001101111 10010101101100011011000110111100
|
||||
12 Hello 00101011011000110110001101111 00101011011000110110001101111000
|
||||
13 Hello 0101011011000110110001101111 01010110110001101100011011110000
|
||||
14 Hello 101011011000110110001101111 10101101100011011000110111100000
|
||||
15 Hello 01011011000110110001101111 01011011000110110001101111000000
|
||||
16 Hello 1011011000110110001101111 10110110001101100011011110000000
|
||||
-1 Hello 1 10000000
|
||||
-2 Hello 11 11000000
|
||||
-3 Hello 111 11100000
|
||||
-4 Hello 1111 11110000
|
||||
-5 Hello 01111 01111000
|
||||
-6 Hello 101111 10111100
|
||||
-7 Hello 1101111 11011110
|
||||
-8 Hello 01101111 01101111
|
||||
-9 Hello 001101111 0011011110000000
|
||||
-10 Hello 0001101111 0001101111000000
|
||||
-11 Hello 10001101111 1000110111100000
|
||||
-12 Hello 110001101111 1100011011110000
|
||||
-13 Hello 0110001101111 0110001101111000
|
||||
-14 Hello 10110001101111 1011000110111100
|
||||
-15 Hello 110110001101111 1101100011011110
|
||||
-16 Hello 0110110001101111 0110110001101111
|
||||
Const Truncate Offset
|
||||
41 Hello
|
||||
-41 Hello 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
Const Nullable Offset
|
||||
1 \N \N \N
|
||||
\N Hello \N \N
|
||||
\N \N \N \N
|
||||
Const Offset, Const Length
|
||||
1 1 0 00000000
|
||||
2 2 10 10000000
|
||||
3 3 001 00100000
|
||||
4 4 0100 01000000
|
||||
5 5 10000 10000000
|
||||
6 6 000011 00001100
|
||||
7 7 0001100 00011000
|
||||
8 8 00110010 00110010
|
||||
9 9 011001010 0110010100000000
|
||||
10 10 1100101011 1100101011000000
|
||||
11 11 10010101101 1001010110100000
|
||||
12 12 001010110110 0010101101100000
|
||||
13 13 0101011011000 0101011011000000
|
||||
14 14 10101101100011 1010110110001100
|
||||
15 15 010110110001101 0101101100011010
|
||||
16 16 1011011000110110 1011011000110110
|
||||
1 -1 010010000110010101101100011011000110111 0100100001100101011011000110110001101110
|
||||
2 -2 1001000011001010110110001101100011011 1001000011001010110110001101100011011000
|
||||
3 -3 00100001100101011011000110110001101 0010000110010101101100011011000110100000
|
||||
4 -4 010000110010101101100011011000110 0100001100101011011000110110001100000000
|
||||
5 -5 1000011001010110110001101100011 10000110010101101100011011000110
|
||||
6 -6 00001100101011011000110110001 00001100101011011000110110001000
|
||||
7 -7 000110010101101100011011000 00011001010110110001101100000000
|
||||
8 -8 0011001010110110001101100 00110010101101100011011000000000
|
||||
9 -9 01100101011011000110110 011001010110110001101100
|
||||
10 -10 110010101101100011011 110010101101100011011000
|
||||
11 -11 1001010110110001101 100101011011000110100000
|
||||
12 -12 00101011011000110 001010110110001100000000
|
||||
13 -13 010101101100011 0101011011000110
|
||||
14 -14 1010110110001 1010110110001000
|
||||
15 -15 01011011000 0101101100000000
|
||||
16 -16 101101100 1011011000000000
|
||||
-1 1 1 10000000
|
||||
-2 2 11 11000000
|
||||
-3 3 111 11100000
|
||||
-4 4 1111 11110000
|
||||
-5 5 01111 01111000
|
||||
-6 6 101111 10111100
|
||||
-7 7 1101111 11011110
|
||||
-8 8 01101111 01101111
|
||||
-9 9 001101111 0011011110000000
|
||||
-10 10 0001101111 0001101111000000
|
||||
-11 11 10001101111 1000110111100000
|
||||
-12 12 110001101111 1100011011110000
|
||||
-13 13 0110001101111 0110001101111000
|
||||
-14 14 10110001101111 1011000110111100
|
||||
-15 15 110110001101111 1101100011011110
|
||||
-16 16 0110110001101111 0110110001101111
|
||||
-1 -16
|
||||
-2 -15
|
||||
-3 -14
|
||||
-4 -13
|
||||
-5 -12
|
||||
-6 -11
|
||||
-7 -10
|
||||
-8 -9
|
||||
-9 -8 0 00000000
|
||||
-10 -7 000 00000000
|
||||
-11 -6 10001 10001000
|
||||
-12 -5 1100011 11000110
|
||||
-13 -4 011000110 0110001100000000
|
||||
-14 -3 10110001101 1011000110100000
|
||||
-15 -2 1101100011011 1101100011011000
|
||||
-16 -1 011011000110111 0110110001101110
|
||||
1 1 Hello 0 00000000
|
||||
2 2 Hello 10 10000000
|
||||
3 3 Hello 001 00100000
|
||||
4 4 Hello 0100 01000000
|
||||
5 5 Hello 10000 10000000
|
||||
6 6 Hello 000011 00001100
|
||||
7 7 Hello 0001100 00011000
|
||||
8 8 Hello 00110010 00110010
|
||||
9 9 Hello 011001010 0110010100000000
|
||||
10 10 Hello 1100101011 1100101011000000
|
||||
11 11 Hello 10010101101 1001010110100000
|
||||
12 12 Hello 001010110110 0010101101100000
|
||||
13 13 Hello 0101011011000 0101011011000000
|
||||
14 14 Hello 10101101100011 1010110110001100
|
||||
15 15 Hello 010110110001101 0101101100011010
|
||||
16 16 Hello 1011011000110110 1011011000110110
|
||||
1 -1 Hello 010010000110010101101100011011000110111 0100100001100101011011000110110001101110
|
||||
2 -2 Hello 1001000011001010110110001101100011011 1001000011001010110110001101100011011000
|
||||
3 -3 Hello 00100001100101011011000110110001101 0010000110010101101100011011000110100000
|
||||
4 -4 Hello 010000110010101101100011011000110 0100001100101011011000110110001100000000
|
||||
5 -5 Hello 1000011001010110110001101100011 10000110010101101100011011000110
|
||||
6 -6 Hello 00001100101011011000110110001 00001100101011011000110110001000
|
||||
7 -7 Hello 000110010101101100011011000 00011001010110110001101100000000
|
||||
8 -8 Hello 0011001010110110001101100 00110010101101100011011000000000
|
||||
9 -9 Hello 01100101011011000110110 011001010110110001101100
|
||||
10 -10 Hello 110010101101100011011 110010101101100011011000
|
||||
11 -11 Hello 1001010110110001101 100101011011000110100000
|
||||
12 -12 Hello 00101011011000110 001010110110001100000000
|
||||
13 -13 Hello 010101101100011 0101011011000110
|
||||
14 -14 Hello 1010110110001 1010110110001000
|
||||
15 -15 Hello 01011011000 0101101100000000
|
||||
16 -16 Hello 101101100 1011011000000000
|
||||
-1 1 Hello 1 10000000
|
||||
-2 2 Hello 11 11000000
|
||||
-3 3 Hello 111 11100000
|
||||
-4 4 Hello 1111 11110000
|
||||
-5 5 Hello 01111 01111000
|
||||
-6 6 Hello 101111 10111100
|
||||
-7 7 Hello 1101111 11011110
|
||||
-8 8 Hello 01101111 01101111
|
||||
-9 9 Hello 001101111 0011011110000000
|
||||
-10 10 Hello 0001101111 0001101111000000
|
||||
-11 11 Hello 10001101111 1000110111100000
|
||||
-12 12 Hello 110001101111 1100011011110000
|
||||
-13 13 Hello 0110001101111 0110001101111000
|
||||
-14 14 Hello 10110001101111 1011000110111100
|
||||
-15 15 Hello 110110001101111 1101100011011110
|
||||
-16 16 Hello 0110110001101111 0110110001101111
|
||||
-1 -16 Hello
|
||||
-2 -15 Hello
|
||||
-3 -14 Hello
|
||||
-4 -13 Hello
|
||||
-5 -12 Hello
|
||||
-6 -11 Hello
|
||||
-7 -10 Hello
|
||||
-8 -9 Hello
|
||||
-9 -8 Hello 0 00000000
|
||||
-10 -7 Hello 000 00000000
|
||||
-11 -6 Hello 10001 10001000
|
||||
-12 -5 Hello 1100011 11000110
|
||||
-13 -4 Hello 011000110 0110001100000000
|
||||
-14 -3 Hello 10110001101 1011000110100000
|
||||
-15 -2 Hello 1101100011011 1101100011011000
|
||||
-16 -1 Hello 011011000110111 0110110001101110
|
||||
Const Truncate Offset, Const Truncate Length
|
||||
36 8 Hello 01111 01111000
|
||||
41 1 Hello
|
||||
-44 -36 Hello 0100 01000000
|
||||
-41 -40 Hello
|
||||
-41 41 Hello 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
Const Nullable Offset, Const Nullable Length
|
||||
1 1 \N \N \N
|
||||
\N 1 Hello \N \N
|
||||
1 \N Hello \N \N
|
||||
\N \N \N \N \N
|
||||
Dynamic Offset, Dynamic Length
|
||||
0 0
|
||||
1 1 0 00000000
|
||||
2 2 10 10000000
|
||||
3 3 001 00100000
|
||||
4 4 0100 01000000
|
||||
5 5 10000 10000000
|
||||
6 6 000011 00001100
|
||||
7 7 0001100 00011000
|
||||
8 8 00110010 00110010
|
||||
9 9 011001010 0110010100000000
|
||||
10 10 1100101011 1100101011000000
|
||||
11 11 10010101101 1001010110100000
|
||||
12 12 001010110110 0010101101100000
|
||||
13 13 0101011011000 0101011011000000
|
||||
14 14 10101101100011 1010110110001100
|
||||
15 15 010110110001101 0101101100011010
|
||||
0 0
|
||||
1 -1 010010000110010101101100011011000110111 0100100001100101011011000110110001101110
|
||||
2 -2 1001000011001010110110001101100011011 1001000011001010110110001101100011011000
|
||||
3 -3 00100001100101011011000110110001101 0010000110010101101100011011000110100000
|
||||
4 -4 010000110010101101100011011000110 0100001100101011011000110110001100000000
|
||||
5 -5 1000011001010110110001101100011 10000110010101101100011011000110
|
||||
6 -6 00001100101011011000110110001 00001100101011011000110110001000
|
||||
7 -7 000110010101101100011011000 00011001010110110001101100000000
|
||||
8 -8 0011001010110110001101100 00110010101101100011011000000000
|
||||
9 -9 01100101011011000110110 011001010110110001101100
|
||||
10 -10 110010101101100011011 110010101101100011011000
|
||||
11 -11 1001010110110001101 100101011011000110100000
|
||||
12 -12 00101011011000110 001010110110001100000000
|
||||
13 -13 010101101100011 0101011011000110
|
||||
14 -14 1010110110001 1010110110001000
|
||||
15 -15 01011011000 0101101100000000
|
||||
0 -16
|
||||
-1 -15
|
||||
-2 -14
|
||||
-3 -13
|
||||
-4 -12
|
||||
-5 -11
|
||||
-6 -10
|
||||
-7 -9
|
||||
-8 -8
|
||||
-9 -7 00 00000000
|
||||
-10 -6 0001 00010000
|
||||
-11 -5 100011 10001100
|
||||
-12 -4 11000110 11000110
|
||||
-13 -3 0110001101 0110001101000000
|
||||
-14 -2 101100011011 1011000110110000
|
||||
-15 -1 11011000110111 1101100011011100
|
||||
0 0
|
||||
-1 1 1 10000000
|
||||
-2 2 11 11000000
|
||||
-3 3 111 11100000
|
||||
-4 4 1111 11110000
|
||||
-5 5 01111 01111000
|
||||
-6 6 101111 10111100
|
||||
-7 7 1101111 11011110
|
||||
-8 8 01101111 01101111
|
||||
-9 9 001101111 0011011110000000
|
||||
-10 10 0001101111 0001101111000000
|
||||
-11 11 10001101111 1000110111100000
|
||||
-12 12 110001101111 1100011011110000
|
||||
-13 13 0110001101111 0110001101111000
|
||||
-14 14 10110001101111 1011000110111100
|
||||
-15 15 110110001101111 1101100011011110
|
||||
0 0 Hello
|
||||
1 1 Hello 0 00000000
|
||||
2 2 Hello 10 10000000
|
||||
3 3 Hello 001 00100000
|
||||
4 4 Hello 0100 01000000
|
||||
5 5 Hello 10000 10000000
|
||||
6 6 Hello 000011 00001100
|
||||
7 7 Hello 0001100 00011000
|
||||
8 8 Hello 00110010 00110010
|
||||
9 9 Hello 011001010 0110010100000000
|
||||
10 10 Hello 1100101011 1100101011000000
|
||||
11 11 Hello 10010101101 1001010110100000
|
||||
12 12 Hello 001010110110 0010101101100000
|
||||
13 13 Hello 0101011011000 0101011011000000
|
||||
14 14 Hello 10101101100011 1010110110001100
|
||||
15 15 Hello 010110110001101 0101101100011010
|
||||
0 0 Hello
|
||||
1 -1 Hello 010010000110010101101100011011000110111 0100100001100101011011000110110001101110
|
||||
2 -2 Hello 1001000011001010110110001101100011011 1001000011001010110110001101100011011000
|
||||
3 -3 Hello 00100001100101011011000110110001101 0010000110010101101100011011000110100000
|
||||
4 -4 Hello 010000110010101101100011011000110 0100001100101011011000110110001100000000
|
||||
5 -5 Hello 1000011001010110110001101100011 10000110010101101100011011000110
|
||||
6 -6 Hello 00001100101011011000110110001 00001100101011011000110110001000
|
||||
7 -7 Hello 000110010101101100011011000 00011001010110110001101100000000
|
||||
8 -8 Hello 0011001010110110001101100 00110010101101100011011000000000
|
||||
9 -9 Hello 01100101011011000110110 011001010110110001101100
|
||||
10 -10 Hello 110010101101100011011 110010101101100011011000
|
||||
11 -11 Hello 1001010110110001101 100101011011000110100000
|
||||
12 -12 Hello 00101011011000110 001010110110001100000000
|
||||
13 -13 Hello 010101101100011 0101011011000110
|
||||
14 -14 Hello 1010110110001 1010110110001000
|
||||
15 -15 Hello 01011011000 0101101100000000
|
||||
0 -16 Hello
|
||||
-1 -15 Hello
|
||||
-2 -14 Hello
|
||||
-3 -13 Hello
|
||||
-4 -12 Hello
|
||||
-5 -11 Hello
|
||||
-6 -10 Hello
|
||||
-7 -9 Hello
|
||||
-8 -8 Hello
|
||||
-9 -7 Hello 00 00000000
|
||||
-10 -6 Hello 0001 00010000
|
||||
-11 -5 Hello 100011 10001100
|
||||
-12 -4 Hello 11000110 11000110
|
||||
-13 -3 Hello 0110001101 0110001101000000
|
||||
-14 -2 Hello 101100011011 1011000110110000
|
||||
-15 -1 Hello 11011000110111 1101100011011100
|
||||
0 0 Hello
|
||||
-1 1 Hello 1 10000000
|
||||
-2 2 Hello 11 11000000
|
||||
-3 3 Hello 111 11100000
|
||||
-4 4 Hello 1111 11110000
|
||||
-5 5 Hello 01111 01111000
|
||||
-6 6 Hello 101111 10111100
|
||||
-7 7 Hello 1101111 11011110
|
||||
-8 8 Hello 01101111 01101111
|
||||
-9 9 Hello 001101111 0011011110000000
|
||||
-10 10 Hello 0001101111 0001101111000000
|
||||
-11 11 Hello 10001101111 1000110111100000
|
||||
-12 12 Hello 110001101111 1100011011110000
|
||||
-13 13 Hello 0110001101111 0110001101111000
|
||||
-14 14 Hello 10110001101111 1011000110111100
|
||||
-15 15 Hello 110110001101111 1101100011011110
|
||||
Dynamic Truncate Offset, Dynamic Truncate Length
|
||||
-8 8 Hello 01101111 01101111
|
||||
-7 8 Hello 1101111 11011110
|
||||
-6 8 Hello 101111 10111100
|
||||
-5 8 Hello 01111 01111000
|
||||
-4 8 Hello 1111 11110000
|
||||
-3 8 Hello 111 11100000
|
||||
-2 8 Hello 11 11000000
|
||||
-1 8 Hello 1 10000000
|
||||
0 8 Hello
|
||||
-4 0 Hello
|
||||
-4 1 Hello 1 10000000
|
||||
-4 2 Hello 11 11000000
|
||||
-4 3 Hello 111 11100000
|
||||
-4 4 Hello 1111 11110000
|
||||
-4 5 Hello 1111 11110000
|
||||
-4 6 Hello 1111 11110000
|
||||
-4 7 Hello 1111 11110000
|
||||
-4 8 Hello 1111 11110000
|
||||
-36 8 Hello 10000110 10000110
|
||||
-37 8 Hello 01000011 01000011
|
||||
-38 8 Hello 00100001 00100001
|
||||
-39 8 Hello 10010000 10010000
|
||||
-40 8 Hello 01001000 01001000
|
||||
-41 8 Hello 0100100 01001000
|
||||
-42 8 Hello 010010 01001000
|
||||
-43 8 Hello 01001 01001000
|
||||
-44 8 Hello 0100 01000000
|
||||
-44 0 Hello
|
||||
-44 1 Hello
|
||||
-44 2 Hello
|
||||
-44 3 Hello
|
||||
-44 4 Hello
|
||||
-44 5 Hello 0 00000000
|
||||
-44 6 Hello 01 01000000
|
||||
-44 7 Hello 010 01000000
|
||||
-44 8 Hello 0100 01000000
|
||||
-44 40 Hello 010010000110010101101100011011000110 0100100001100101011011000110110001100000
|
||||
-44 41 Hello 0100100001100101011011000110110001101 0100100001100101011011000110110001101000
|
||||
-44 42 Hello 01001000011001010110110001101100011011 0100100001100101011011000110110001101100
|
||||
-44 43 Hello 010010000110010101101100011011000110111 0100100001100101011011000110110001101110
|
||||
-44 44 Hello 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
-44 45 Hello 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
-44 46 Hello 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
-44 47 Hello 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
-44 48 Hello 0100100001100101011011000110110001101111 0100100001100101011011000110110001101111
|
||||
Dynamic Nullable Offset, Dynamic Nullable Length
|
||||
0 0 Hello
|
||||
\N 1 Hello \N \N
|
||||
2 \N Hello \N \N
|
||||
3 3 \N \N \N
|
||||
4 4 Hello 0100 01000000
|
||||
\N 5 Hello \N \N
|
||||
6 \N Hello \N \N
|
||||
\N \N \N \N \N
|
||||
8 8 Hello 00110010 00110010
|
||||
\N 9 Hello \N \N
|
||||
10 \N Hello \N \N
|
||||
11 11 \N \N \N
|
||||
12 12 Hello 001010110110 0010101101100000
|
||||
\N 13 Hello \N \N
|
||||
14 \N Hello \N \N
|
||||
\N \N \N \N \N
|
||||
|
@ -1,111 +1,144 @@
|
||||
SELECT 'Const Offset';
|
||||
select 1, subString(bin('Hello'), 1), bin(bitSlice('Hello', 1));
|
||||
select 2, subString(bin('Hello'), 2), bin(bitSlice('Hello', 2));
|
||||
select 3, subString(bin('Hello'), 3), bin(bitSlice('Hello', 3));
|
||||
select 4, subString(bin('Hello'), 4), bin(bitSlice('Hello', 4));
|
||||
select 5, subString(bin('Hello'), 5), bin(bitSlice('Hello', 5));
|
||||
select 6, subString(bin('Hello'), 6), bin(bitSlice('Hello', 6));
|
||||
select 7, subString(bin('Hello'), 7), bin(bitSlice('Hello', 7));
|
||||
select 8, subString(bin('Hello'), 8), bin(bitSlice('Hello', 8));
|
||||
select 9, subString(bin('Hello'), 9), bin(bitSlice('Hello', 9));
|
||||
select 10, subString(bin('Hello'), 10), bin(bitSlice('Hello', 10));
|
||||
select 11, subString(bin('Hello'), 11), bin(bitSlice('Hello', 11));
|
||||
select 12, subString(bin('Hello'), 12), bin(bitSlice('Hello', 12));
|
||||
select 13, subString(bin('Hello'), 13), bin(bitSlice('Hello', 13));
|
||||
select 14, subString(bin('Hello'), 14), bin(bitSlice('Hello', 14));
|
||||
select 15, subString(bin('Hello'), 15), bin(bitSlice('Hello', 15));
|
||||
select 16, subString(bin('Hello'), 16), bin(bitSlice('Hello', 16));
|
||||
select 1 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 2 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 3 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 4 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 5 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 6 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 7 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 8 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 9 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 10 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 11 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 12 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 13 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 14 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 15 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select 16 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
|
||||
select -1, subString(bin('Hello'), -1), bin(bitSlice('Hello', -1));
|
||||
select -2, subString(bin('Hello'), -2), bin(bitSlice('Hello', -2));
|
||||
select -3, subString(bin('Hello'), -3), bin(bitSlice('Hello', -3));
|
||||
select -4, subString(bin('Hello'), -4), bin(bitSlice('Hello', -4));
|
||||
select -5, subString(bin('Hello'), -5), bin(bitSlice('Hello', -5));
|
||||
select -6, subString(bin('Hello'), -6), bin(bitSlice('Hello', -6));
|
||||
select -7, subString(bin('Hello'), -7), bin(bitSlice('Hello', -7));
|
||||
select -8, subString(bin('Hello'), -8), bin(bitSlice('Hello', -8));
|
||||
select -9, subString(bin('Hello'), -9), bin(bitSlice('Hello', -9));
|
||||
select -10, subString(bin('Hello'), -10), bin(bitSlice('Hello', -10));
|
||||
select -11, subString(bin('Hello'), -11), bin(bitSlice('Hello', -11));
|
||||
select -12, subString(bin('Hello'), -12), bin(bitSlice('Hello', -12));
|
||||
select -13, subString(bin('Hello'), -13), bin(bitSlice('Hello', -13));
|
||||
select -14, subString(bin('Hello'), -14), bin(bitSlice('Hello', -14));
|
||||
select -15, subString(bin('Hello'), -15), bin(bitSlice('Hello', -15));
|
||||
select -16, subString(bin('Hello'), -16), bin(bitSlice('Hello', -16));
|
||||
select -1 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -2 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -3 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -4 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -5 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -6 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -7 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -8 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -9 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -10 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -11 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -12 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -13 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -14 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -15 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -16 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
|
||||
|
||||
SELECT 'Const Truncate Offset';
|
||||
select 41 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select -41 as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
|
||||
SELECT 'Const Nullable Offset';
|
||||
select 1 as offset, null as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select null as offset, 'Hello' as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
select null as offset, null as s, subString(bin(s), offset), bin(bitSlice(s, offset));
|
||||
|
||||
SELECT 'Const Offset, Const Length';
|
||||
select 1, 1, subString(bin('Hello'), 1, 1), bin(bitSlice('Hello', 1, 1));
|
||||
select 2, 2, subString(bin('Hello'), 2, 2), bin(bitSlice('Hello', 2, 2));
|
||||
select 3, 3, subString(bin('Hello'), 3, 3), bin(bitSlice('Hello', 3, 3));
|
||||
select 4, 4, subString(bin('Hello'), 4, 4), bin(bitSlice('Hello', 4, 4));
|
||||
select 5, 5, subString(bin('Hello'), 5, 5), bin(bitSlice('Hello', 5, 5));
|
||||
select 6, 6, subString(bin('Hello'), 6, 6), bin(bitSlice('Hello', 6, 6));
|
||||
select 7, 7, subString(bin('Hello'), 7, 7), bin(bitSlice('Hello', 7, 7));
|
||||
select 8, 8, subString(bin('Hello'), 8, 8), bin(bitSlice('Hello', 8, 8));
|
||||
select 9, 9, subString(bin('Hello'), 9, 9), bin(bitSlice('Hello', 9, 9));
|
||||
select 10, 10, subString(bin('Hello'), 10, 10), bin(bitSlice('Hello', 10, 10));
|
||||
select 11, 11, subString(bin('Hello'), 11, 11), bin(bitSlice('Hello', 11, 11));
|
||||
select 12, 12, subString(bin('Hello'), 12, 12), bin(bitSlice('Hello', 12, 12));
|
||||
select 13, 13, subString(bin('Hello'), 13, 13), bin(bitSlice('Hello', 13, 13));
|
||||
select 14, 14, subString(bin('Hello'), 14, 14), bin(bitSlice('Hello', 14, 14));
|
||||
select 15, 15, subString(bin('Hello'), 15, 15), bin(bitSlice('Hello', 15, 15));
|
||||
select 16, 16, subString(bin('Hello'), 16, 16), bin(bitSlice('Hello', 16, 16));
|
||||
select 1 as offset, 1 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 2 as offset, 2 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 3 as offset, 3 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 4 as offset, 4 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 5 as offset, 5 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 6 as offset, 6 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 7 as offset, 7 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 8 as offset, 8 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 9 as offset, 9 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 10 as offset, 10 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 11 as offset, 11 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 12 as offset, 12 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 13 as offset, 13 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 14 as offset, 14 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 15 as offset, 15 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 16 as offset, 16 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select 1, -1, subString(bin('Hello'), 1, -1), bin(bitSlice('Hello', 1, -1));
|
||||
select 2, -2, subString(bin('Hello'), 2, -2), bin(bitSlice('Hello', 2, -2));
|
||||
select 3, -3, subString(bin('Hello'), 3, -3), bin(bitSlice('Hello', 3, -3));
|
||||
select 4, -4, subString(bin('Hello'), 4, -4), bin(bitSlice('Hello', 4, -4));
|
||||
select 5, -5, subString(bin('Hello'), 5, -5), bin(bitSlice('Hello', 5, -5));
|
||||
select 6, -6, subString(bin('Hello'), 6, -6), bin(bitSlice('Hello', 6, -6));
|
||||
select 7, -7, subString(bin('Hello'), 7, -7), bin(bitSlice('Hello', 7, -7));
|
||||
select 8, -8, subString(bin('Hello'), 8, -8), bin(bitSlice('Hello', 8, -8));
|
||||
select 9, -9, subString(bin('Hello'), 9, -9), bin(bitSlice('Hello', 9, -9));
|
||||
select 10, -10, subString(bin('Hello'), 10, -10), bin(bitSlice('Hello', 10, -10));
|
||||
select 11, -11, subString(bin('Hello'), 11, -11), bin(bitSlice('Hello', 11, -11));
|
||||
select 12, -12, subString(bin('Hello'), 12, -12), bin(bitSlice('Hello', 12, -12));
|
||||
select 13, -13, subString(bin('Hello'), 13, -13), bin(bitSlice('Hello', 13, -13));
|
||||
select 14, -14, subString(bin('Hello'), 14, -14), bin(bitSlice('Hello', 14, -14));
|
||||
select 15, -15, subString(bin('Hello'), 15, -15), bin(bitSlice('Hello', 15, -15));
|
||||
select 16, -16, subString(bin('Hello'), 16, -16), bin(bitSlice('Hello', 16, -16));
|
||||
select 1 as offset, -1 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 2 as offset, -2 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 3 as offset, -3 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 4 as offset, -4 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 5 as offset, -5 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 6 as offset, -6 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 7 as offset, -7 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 8 as offset, -8 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 9 as offset, -9 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 10 as offset, -10 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 11 as offset, -11 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 12 as offset, -12 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 13 as offset, -13 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 14 as offset, -14 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 15 as offset, -15 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 16 as offset, -16 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select -1, 1, subString(bin('Hello'), -1, 1), bin(bitSlice('Hello', -1, 1));
|
||||
select -2, 2, subString(bin('Hello'), -2, 2), bin(bitSlice('Hello', -2, 2));
|
||||
select -3, 3, subString(bin('Hello'), -3, 3), bin(bitSlice('Hello', -3, 3));
|
||||
select -4, 4, subString(bin('Hello'), -4, 4), bin(bitSlice('Hello', -4, 4));
|
||||
select -5, 5, subString(bin('Hello'), -5, 5), bin(bitSlice('Hello', -5, 5));
|
||||
select -6, 6, subString(bin('Hello'), -6, 6), bin(bitSlice('Hello', -6, 6));
|
||||
select -7, 7, subString(bin('Hello'), -7, 7), bin(bitSlice('Hello', -7, 7));
|
||||
select -8, 8, subString(bin('Hello'), -8, 8), bin(bitSlice('Hello', -8, 8));
|
||||
select -9, 9, subString(bin('Hello'), -9, 9), bin(bitSlice('Hello', -9, 9));
|
||||
select -10, 10, subString(bin('Hello'), -10, 10), bin(bitSlice('Hello', -10, 10));
|
||||
select -11, 11, subString(bin('Hello'), -11, 11), bin(bitSlice('Hello', -11, 11));
|
||||
select -12, 12, subString(bin('Hello'), -12, 12), bin(bitSlice('Hello', -12, 12));
|
||||
select -13, 13, subString(bin('Hello'), -13, 13), bin(bitSlice('Hello', -13, 13));
|
||||
select -14, 14, subString(bin('Hello'), -14, 14), bin(bitSlice('Hello', -14, 14));
|
||||
select -15, 15, subString(bin('Hello'), -15, 15), bin(bitSlice('Hello', -15, 15));
|
||||
select -16, 16, subString(bin('Hello'), -16, 16), bin(bitSlice('Hello', -16, 16));
|
||||
select -1 as offset, 1 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -2 as offset, 2 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -3 as offset, 3 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -4 as offset, 4 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -5 as offset, 5 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -6 as offset, 6 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -7 as offset, 7 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -8 as offset, 8 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -9 as offset, 9 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -10 as offset, 10 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -11 as offset, 11 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -12 as offset, 12 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -13 as offset, 13 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -14 as offset, 14 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -15 as offset, 15 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -16 as offset, 16 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select -1, -16, subString(bin('Hello'), -1, -16), bin(bitSlice('Hello', -1, -16));
|
||||
select -2, -15, subString(bin('Hello'), -2, -15), bin(bitSlice('Hello', -2, -15));
|
||||
select -3, -14, subString(bin('Hello'), -3, -14), bin(bitSlice('Hello', -3, -14));
|
||||
select -4, -13, subString(bin('Hello'), -4, -13), bin(bitSlice('Hello', -4, -13));
|
||||
select -5, -12, subString(bin('Hello'), -5, -12), bin(bitSlice('Hello', -5, -12));
|
||||
select -6, -11, subString(bin('Hello'), -6, -11), bin(bitSlice('Hello', -6, -11));
|
||||
select -7, -10, subString(bin('Hello'), -7, -10), bin(bitSlice('Hello', -7, -10));
|
||||
select -8, -9, subString(bin('Hello'), -8, -9), bin(bitSlice('Hello', -8, -9));
|
||||
select -9, -8, subString(bin('Hello'), -9, -8), bin(bitSlice('Hello', -9, -8));
|
||||
select -10, -7, subString(bin('Hello'), -10, -7), bin(bitSlice('Hello', -10, -7));
|
||||
select -11, -6, subString(bin('Hello'), -11, -6), bin(bitSlice('Hello', -11, -6));
|
||||
select -12, -5, subString(bin('Hello'), -12, -5), bin(bitSlice('Hello', -12, -5));
|
||||
select -13, -4, subString(bin('Hello'), -13, -4), bin(bitSlice('Hello', -13, -4));
|
||||
select -14, -3, subString(bin('Hello'), -14, -3), bin(bitSlice('Hello', -14, -3));
|
||||
select -15, -2, subString(bin('Hello'), -15, -2), bin(bitSlice('Hello', -15, -2));
|
||||
select -16, -1, subString(bin('Hello'), -16, -1), bin(bitSlice('Hello', -16, -1));
|
||||
select -1 as offset, -16 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -2 as offset, -15 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -3 as offset, -14 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -4 as offset, -13 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -5 as offset, -12 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -6 as offset, -11 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -7 as offset, -10 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -8 as offset, -9 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -9 as offset, -8 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -10 as offset, -7 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -11 as offset, -6 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -12 as offset, -5 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -13 as offset, -4 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -14 as offset, -3 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -15 as offset, -2 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -16 as offset, -1 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select 'Const Truncate Offset, Const Truncate Length';
|
||||
select 36 as offset, 8 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 41 as offset, 1 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -44 as offset, -36 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -41 as offset, -40 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select -41 as offset, 41 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select 'Const Nullable Offset, Const Nullable Length';
|
||||
select 1 as offset, 1 as length, null as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length));
|
||||
select null as offset, 1 as length, 'Hello' as s, subString(bin(s), offset, length), bin(bitSlice(s, offset, length));
|
||||
select 1 as offset, null as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length));
|
||||
select null as offset, null as length, null as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length));
|
||||
|
||||
select 'Dynamic Offset, Dynamic Length';
|
||||
select number as offset, number as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(16);
|
||||
select number as offset, -number as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(16);
|
||||
select -number as offset, -16+number as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(16);
|
||||
select -number as offset, number as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(16);
|
||||
|
||||
select number, number, subString(bin('Hello'), number, number), bin(bitSlice('Hello', number, number)) from numbers(16);
|
||||
select number, -number, subString(bin('Hello'), number, -number), bin(bitSlice('Hello', number, -number)) from numbers(16);
|
||||
select -number, -16+number, subString(bin('Hello'), -number, -16+number), bin(bitSlice('Hello', -number, -16+number)) from numbers(16);
|
||||
select -number, number, subString(bin('Hello'), -number, number), bin(bitSlice('Hello', -number, number)) from numbers(16);
|
||||
select 'Dynamic Truncate Offset, Dynamic Truncate Length';
|
||||
select number-8 as offset, 8 as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
select -4 as offset, number as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
select -36-number as offset, 8 as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
select -44 as offset, number as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
select -44 as offset, number + 40 as length, 'Hello' as s, subString(bin(s), offset , length), bin(bitSlice(s, offset, length)) from numbers(9);
|
||||
|
||||
select 'Dynamic Nullable Offset, Dynamic Nullable Length';
|
||||
select if(number%4 ==1 or number%8==7, null, number) as offset, if(number%4==2 or number%8==7, null, number) as length,if(number%4 ==3, null, 'Hello') as s,
|
||||
subString(bin(s), offset, length), bin(bitSlice(s, offset , length))
|
||||
from numbers(16);
|
||||
|
Loading…
Reference in New Issue
Block a user