use oracle coalesce

This commit is contained in:
Martin McKeaveney 2024-07-23 11:39:50 +01:00
parent 8fbb978cca
commit d50c937c68
2 changed files with 10 additions and 8 deletions

View File

@ -436,9 +436,10 @@ class InternalBuilder {
[value]
)
} else if (this.client === SqlClient.ORACLE) {
query = query[fnc](`${quotedIdentifier(this.client, key)} = ?`, [
value,
])
query = query[fnc](
`COALESCE(${quotedIdentifier(this.client, key)}, -1) = ?`,
[value]
)
} else {
query = query[fnc](
`COALESCE(${quotedIdentifier(this.client, key)} = ?, FALSE)`,
@ -459,9 +460,10 @@ class InternalBuilder {
[value]
)
} else if (this.client === SqlClient.ORACLE) {
query = query[fnc](`${quotedIdentifier(this.client, key)} != ?`, [
value,
])
query = query[fnc](
`COALESCE(${quotedIdentifier(this.client, key)}, -1) != ?`,
[value]
)
} else {
query = query[fnc](
`COALESCE(${quotedIdentifier(this.client, key)} != ?, TRUE)`,

View File

@ -239,7 +239,7 @@ describe("SQL query builder", () => {
expect(query).toEqual({
bindings: ["John", limit, 5000],
sql: `select * from (select * from (select * from (select * from "test" where "test"."name" = :1 order by "test"."id" asc) where rownum <= :2) "test" order by "test"."id" asc) where rownum <= :3`,
sql: `select * from (select * from (select * from (select * from "test" where COALESCE("test"."name", -1) = :1 order by "test"."id" asc) where rownum <= :2) "test" order by "test"."id" asc) where rownum <= :3`,
})
})
@ -256,7 +256,7 @@ describe("SQL query builder", () => {
expect(query).toEqual({
bindings: ["John", limit, 5000],
sql: `select * from (select * from (select * from (select * from "test" where "test"."name" != :1 order by "test"."id" asc) where rownum <= :2) "test" order by "test"."id" asc) where rownum <= :3`,
sql: `select * from (select * from (select * from (select * from "test" where COALESCE("test"."name", -1) != :1 order by "test"."id" asc) where rownum <= :2) "test" order by "test"."id" asc) where rownum <= :3`,
})
})
})