Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add build in function BIN_BIT, BIN_BIT_STR, BIN_TO_STR and BIN_TO_STR_LIST [CORE4029] #4359

Closed
firebird-automations opened this issue Jan 4, 2013 · 2 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: @livius2

I know that we can write udf(and we have it) - but binary operations are common and will be good to see this functions supported by engine itself

1. BIN_BIT(VALUE: INTEGER; BIT_NR: INTEGER)

SELECT BIN_TO_STR(19, 0) FROM RDB$DATABASE
result
1
SELECT BIN_TO_STR(19, 2) FROM RDB$DATABASE
result
0

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

2. BIN_BIT_STR(VALUE: INTEGER; BIT_NR: INTEGER; BIT_SET_VALUE: PCHAR; BIT_NOT_SET_VALUE: PCHAR)

SELECT BIN_TO_STR(19, 0, 'YES', 'NO') FROM RDB$DATABASE
result
'YES'
SELECT BIN_TO_STR(19, 2, 'YES', 'NO') FROM RDB$DATABASE
result
'NO'

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

3. BIN_TO_STR(VALUE: Integer; BIT_COUNT: Integer)

SELECT BIN_TO_STR(19, 2) FROM RDB$DATABASE
result
'11'
SELECT BIN_TO_STR(19, 5) FROM RDB$DATABASE
'10011'

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

4. BIN_TO_STR_LIST(VALUE: Integer; BIT_COUNT: Integer; BIT_VALUE_LIST: PCHAR; OUT_LIST_SEPARATOR: PCHAR)

SELECT BIN_TO_STR_LIST(19, 2, 'DELIVERED;RECIVED;CHECKED;POSTED;CREATED', ', ') FROM RDB$DATABASE
result
'DELIVERED'
SELECT BIN_TO_STR_LIST(19, 5, 'DELIVERED;RECIVED;CHECKED;POSTED;CREATED', ', ') FROM RDB$DATABASE
'DELIVERED, RECIVED, CREATED'

and sample with already implemented LIST function

SELECT BIN_TO_STR_LIST(19, 2, (SELECT LIST(VALUE, ';') FROM SOME_TABLE), ', ') FROM RDB$DATABASE

@firebird-automations
Copy link
Collaborator Author

Commented by: @livius2

one result mistake was '01' should be '11'

@firebird-automations
Copy link
Collaborator Author

Modified by: @livius2

description: I know that we can write udf(and we have it) - but binary operations are common and will be good to see this functions supported by engine itself

1. BIN_BIT(VALUE: INTEGER; BIT_NR: INTEGER)

SELECT BIN_TO_STR(19, 0) FROM RDB$DATABASE
result
1
SELECT BIN_TO_STR(19, 2) FROM RDB$DATABASE
result
0

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

2. BIN_BIT_STR(VALUE: INTEGER; BIT_NR: INTEGER; BIT_SET_VALUE: PCHAR; BIT_NOT_SET_VALUE: PCHAR)

SELECT BIN_TO_STR(19, 0, 'YES', 'NO') FROM RDB$DATABASE
result
'YES'
SELECT BIN_TO_STR(19, 2, 'YES', 'NO') FROM RDB$DATABASE
result
'NO'

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

3. BIN_TO_STR(VALUE: Integer; BIT_COUNT: Integer)

SELECT BIN_TO_STR(19, 2) FROM RDB$DATABASE
result
'01'
SELECT BIN_TO_STR(19, 5) FROM RDB$DATABASE
'10011'

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

4. BIN_TO_STR_LIST(VALUE: Integer; BIT_COUNT: Integer; BIT_VALUE_LIST: PCHAR; OUT_LIST_SEPARATOR: PCHAR)

SELECT BIN_TO_STR_LIST(19, 2, 'DELIVERED;RECIVED;CHECKED;POSTED;CREATED', ', ') FROM RDB$DATABASE
result
'DELIVERED'
SELECT BIN_TO_STR_LIST(19, 5, 'DELIVERED;RECIVED;CHECKED;POSTED;CREATED', ', ') FROM RDB$DATABASE
'DELIVERED, RECIVED, CREATED'

and sample with already implemented LIST function

SELECT BIN_TO_STR_LIST(19, 2, (SELECT LIST(VALUE, ';') FROM SOME_TABLE), ', ') FROM RDB$DATABASE

=>

I know that we can write udf(and we have it) - but binary operations are common and will be good to see this functions supported by engine itself

1. BIN_BIT(VALUE: INTEGER; BIT_NR: INTEGER)

SELECT BIN_TO_STR(19, 0) FROM RDB$DATABASE
result
1
SELECT BIN_TO_STR(19, 2) FROM RDB$DATABASE
result
0

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

2. BIN_BIT_STR(VALUE: INTEGER; BIT_NR: INTEGER; BIT_SET_VALUE: PCHAR; BIT_NOT_SET_VALUE: PCHAR)

SELECT BIN_TO_STR(19, 0, 'YES', 'NO') FROM RDB$DATABASE
result
'YES'
SELECT BIN_TO_STR(19, 2, 'YES', 'NO') FROM RDB$DATABASE
result
'NO'

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

3. BIN_TO_STR(VALUE: Integer; BIT_COUNT: Integer)

SELECT BIN_TO_STR(19, 2) FROM RDB$DATABASE
result
'11'
SELECT BIN_TO_STR(19, 5) FROM RDB$DATABASE
'10011'

#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠#⁠

4. BIN_TO_STR_LIST(VALUE: Integer; BIT_COUNT: Integer; BIT_VALUE_LIST: PCHAR; OUT_LIST_SEPARATOR: PCHAR)

SELECT BIN_TO_STR_LIST(19, 2, 'DELIVERED;RECIVED;CHECKED;POSTED;CREATED', ', ') FROM RDB$DATABASE
result
'DELIVERED'
SELECT BIN_TO_STR_LIST(19, 5, 'DELIVERED;RECIVED;CHECKED;POSTED;CREATED', ', ') FROM RDB$DATABASE
'DELIVERED, RECIVED, CREATED'

and sample with already implemented LIST function

SELECT BIN_TO_STR_LIST(19, 2, (SELECT LIST(VALUE, ';') FROM SOME_TABLE), ', ') FROM RDB$DATABASE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants