From 991a084ce784780777398973c9ae9f5d87b21a6d Mon Sep 17 00:00:00 2001 From: Pranav C Date: Mon, 9 Aug 2021 19:30:27 +0530 Subject: [PATCH] feat: Add RIGHT and LEFT function support Signed-off-by: Pranav C --- .../src/lib/dataMapper/lib/sql/functionMappings/mssql.ts | 2 +- .../src/lib/dataMapper/lib/sql/functionMappings/pg.ts | 2 +- .../src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/mssql.ts b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/mssql.ts index 758408a376..7922895fcd 100644 --- a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/mssql.ts +++ b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/mssql.ts @@ -48,7 +48,7 @@ const mssql = { }, INT: (args: MapFnArgs) => { return args.knex.raw(`CASE WHEN ISNUMERIC(${args.fn(args.pt.arguments[0]).toQuery()}) = 1 THEN FLOOR(${args.fn(args.pt.arguments[0]).toQuery()}) ELSE 0 END${args.colAlias}`) - } + }, } export default mssql; diff --git a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/pg.ts b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/pg.ts index c49c70964a..04b984bf71 100644 --- a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/pg.ts +++ b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/pg.ts @@ -14,7 +14,7 @@ const pg = { INT(args: MapFnArgs) { // todo: correction return args.knex.raw(`REGEXP_REPLACE(COALESCE(${args.fn(args.pt.arguments[0])}::character varying, '0'), '[^0-9]+|\\.[0-9]+' ,'')${args.colAlias}`) - } + }, } diff --git a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts index a23a776208..1531017bcf 100644 --- a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts +++ b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts @@ -23,6 +23,14 @@ const sqlite3 = { SEARCH:'INSTR', INT(args: MapFnArgs) { return args.knex.raw(`CAST(${args.fn(args.pt.arguments[0])} as INTEGER)${args.colAlias}`) + }, + + + LEFT:(args: MapFnArgs)=> { + return args.knex.raw(`SUBSTR(${args.fn(args.pt.arguments[0])},1,${args.fn(args.pt.arguments[1])})${args.colAlias}`) + }, + RIGHT:(args: MapFnArgs)=> { + return args.knex.raw(`SUBSTR(${args.fn(args.pt.arguments[0])},-${args.fn(args.pt.arguments[1])})${args.colAlias}`) } }