Skip to content

Commit 8d22c12

Browse files
authored
Manual SQL Macros
1 parent 0d48335 commit 8d22c12

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

aliases.sql

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
-- Type conversion macros
2+
CREATE OR REPLACE MACRO toString(expr) AS CAST(expr AS VARCHAR);
3+
CREATE OR REPLACE MACRO toInt8(expr) AS CAST(expr AS INT8);
4+
CREATE OR REPLACE MACRO toInt16(expr) AS CAST(expr AS INT16);
5+
CREATE OR REPLACE MACRO toInt32(expr) AS CAST(expr AS INT32);
6+
CREATE OR REPLACE MACRO toInt64(expr) AS CAST(expr AS INT64);
7+
CREATE OR REPLACE MACRO toInt128(expr) AS CAST(expr AS INT128);
8+
CREATE OR REPLACE MACRO toInt256(expr) AS CAST(expr AS HUGEINT);
9+
-- Type conversion with default values
10+
CREATE OR REPLACE MACRO toInt8OrZero(expr) AS COALESCE(TRY_CAST(expr AS INT8), 0);
11+
CREATE OR REPLACE MACRO toInt16OrZero(expr) AS COALESCE(TRY_CAST(expr AS INT16), 0);
12+
CREATE OR REPLACE MACRO toInt32OrZero(expr) AS COALESCE(TRY_CAST(expr AS INT32), 0);
13+
CREATE OR REPLACE MACRO toInt64OrZero(expr) AS COALESCE(TRY_CAST(expr AS INT64), 0);
14+
CREATE OR REPLACE MACRO toInt128OrZero(expr) AS COALESCE(TRY_CAST(expr AS INT128), 0);
15+
CREATE OR REPLACE MACRO toInt256OrZero(expr) AS COALESCE(TRY_CAST(expr AS HUGEINT), 0);
16+
CREATE OR REPLACE MACRO toInt8OrNull(expr) AS TRY_CAST(expr AS INT8);
17+
CREATE OR REPLACE MACRO toInt16OrNull(expr) AS TRY_CAST(expr AS INT16);
18+
CREATE OR REPLACE MACRO toInt32OrNull(expr) AS TRY_CAST(expr AS INT32);
19+
CREATE OR REPLACE MACRO toInt64OrNull(expr) AS TRY_CAST(expr AS INT64);
20+
CREATE OR REPLACE MACRO toInt128OrNull(expr) AS TRY_CAST(expr AS INT128);
21+
CREATE OR REPLACE MACRO toInt256OrNull(expr) AS TRY_CAST(expr AS HUGEINT);
22+
-- Unsigned integer conversion macros
23+
CREATE OR REPLACE MACRO toUInt8(expr) AS CAST(expr AS UTINYINT);
24+
CREATE OR REPLACE MACRO toUInt16(expr) AS CAST(expr AS USMALLINT);
25+
CREATE OR REPLACE MACRO toUInt32(expr) AS CAST(expr AS UINTEGER);
26+
CREATE OR REPLACE MACRO toUInt64(expr) AS CAST(expr AS UBIGINT);
27+
-- Unsigned integer conversion with default values
28+
CREATE OR REPLACE MACRO toUInt8OrZero(expr) AS COALESCE(TRY_CAST(expr AS UTINYINT), 0);
29+
CREATE OR REPLACE MACRO toUInt16OrZero(expr) AS COALESCE(TRY_CAST(expr AS USMALLINT), 0);
30+
CREATE OR REPLACE MACRO toUInt32OrZero(expr) AS COALESCE(TRY_CAST(expr AS UINTEGER), 0);
31+
CREATE OR REPLACE MACRO toUInt64OrZero(expr) AS COALESCE(TRY_CAST(expr AS UBIGINT), 0);
32+
CREATE OR REPLACE MACRO toUInt8OrNull(expr) AS TRY_CAST(expr AS UTINYINT);
33+
CREATE OR REPLACE MACRO toUInt16OrNull(expr) AS TRY_CAST(expr AS USMALLINT);
34+
CREATE OR REPLACE MACRO toUInt32OrNull(expr) AS TRY_CAST(expr AS UINTEGER);
35+
CREATE OR REPLACE MACRO toUInt64OrNull(expr) AS TRY_CAST(expr AS UBIGINT);
36+
-- Floating-point conversion macros
37+
CREATE OR REPLACE MACRO toFloat(expr) AS CAST(expr AS DOUBLE);
38+
CREATE OR REPLACE MACRO toFloatOrNull(expr) AS TRY_CAST(expr AS DOUBLE);
39+
CREATE OR REPLACE MACRO toFloatOrZero(expr) AS COALESCE(TRY_CAST(expr AS DOUBLE), 0);
40+
-- Arithmetic macros
41+
CREATE OR REPLACE MACRO intDiv(a, b) AS (a / b);
42+
CREATE OR REPLACE MACRO intDivOrZero(a, b) AS COALESCE((a / b), 0);
43+
-- String matching macro
44+
CREATE OR REPLACE MACRO match(string, token) AS (string LIKE token);
45+
-- Array macros
46+
CREATE OR REPLACE MACRO arrayExists(needle, haystack) AS (haystack @> ARRAY[needle]);
47+
CREATE OR REPLACE MACRO arrayMap(e, arr) AS (array_transform(arr, e -> (e * e)));

0 commit comments

Comments
 (0)