过滤器和条件运算符

我们原生支持所有特定方言的过滤器和条件运算符。

你可以从 drizzle-orm 导入所有过滤器和条件:

import { eq, ne, gt, gte, ... } from "drizzle-orm";

eq

值等于 n

import { eq } from "drizzle-orm";

db.select().from(table).where(eq(table.column, 5));
SELECT * FROM table WHERE table.column = 5
import { eq } from "drizzle-orm";

db.select().from(table).where(eq(table.column1, table.column2));
SELECT * FROM table WHERE table.column1 = table.column2

ne

值不等于 n

import { ne } from "drizzle-orm";

db.select().from(table).where(ne(table.column, 5));
SELECT * FROM table WHERE table.column <> 5
import { ne } from "drizzle-orm";

db.select().from(table).where(ne(table.column1, table.column2));
SELECT * FROM table WHERE table.column1 <> table.column2

---

gt

值大于 n

import { gt } from "drizzle-orm";

db.select().from(table).where(gt(table.column, 5));
SELECT * FROM table WHERE table.column > 5
import { gt } from "drizzle-orm";

db.select().from(table).where(gt(table.column1, table.column2));
SELECT * FROM table WHERE table.column1 > table.column2

gte

值大于或等于 n

import { gte } from "drizzle-orm";

db.select().from(table).where(gte(table.column, 5));
SELECT * FROM table WHERE table.column >= 5
import { gte } from "drizzle-orm";

db.select().from(table).where(gte(table.column1, table.column2));
SELECT * FROM table WHERE table.column1 >= table.column2

lt

值小于 n

import { lt } from "drizzle-orm";

db.select().from(table).where(lt(table.column, 5));
SELECT * FROM table WHERE table.column < 5
import { lt } from "drizzle-orm";

db.select().from(table).where(lt(table.column1, table.column2));
SELECT * FROM table WHERE table.column1 < table.column2

lte

值小于或等于 n

import { lte } from "drizzle-orm";

db.select().from(table).where(lte(table.column, 5));
SELECT * FROM table WHERE table.column <= 5
import { lte } from "drizzle-orm";

db.select().from(table).where(lte(table.column1, table.column2));
SELECT * FROM table WHERE table.column1 <= table.column2

---

exists

值存在

import { exists } from "drizzle-orm";

const query = db.select().from(table2)
db.select().from(table).where(exists(query));
SELECT * FROM table WHERE EXISTS (SELECT * from table2)

notExists

import { notExists } from "drizzle-orm";

const query = db.select().from(table2)
db.select().from(table).where(notExists(query));
SELECT * FROM table WHERE NOT EXISTS (SELECT * from table2)

isNull

值为 null

import { isNull } from "drizzle-orm";

db.select().from(table).where(isNull(table.column));
SELECT * FROM table WHERE table.column IS NULL

isNotNull

值不为 null

import { isNotNull } from "drizzle-orm";

db.select().from(table).where(isNotNull(table.column));
SELECT * FROM table WHERE table.column IS NOT NULL

---

inArray

值在值数组中

import { inArray } from "drizzle-orm";

db.select().from(table).where(inArray(table.column, [1, 2, 3, 4]));
SELECT * FROM table WHERE table.column in (1, 2, 3, 4)
import { inArray } from "drizzle-orm";

const query = db.select({ data: table2.column }).from(table2);
db.select().from(table).where(inArray(table.column, query));
SELECT * FROM table WHERE table.column IN (SELECT table2.column FROM table2)

notInArray

值不在值数组中

import { notInArray } from "drizzle-orm";

db.select().from(table).where(notInArray(table.column, [1, 2, 3, 4]));
SELECT * FROM table WHERE table.column NOT in (1, 2, 3, 4)
import { notInArray } from "drizzle-orm";

const query = db.select({ data: table2.column }).from(table2);
db.select().from(table).where(notInArray(table.column, query));
SELECT * FROM table WHERE table.column NOT IN (SELECT table2.column FROM table2)

---

between

值介于两个值之间

import { between } from "drizzle-orm";

db.select().from(table).where(between(table.column, 2, 7));
SELECT * FROM table WHERE table.column BETWEEN 2 AND 7

notBetween

值不介于两个值之间

import { notBetween } from "drizzle-orm";

db.select().from(table).where(notBetween(table.column, 2, 7));
SELECT * FROM table WHERE table.column NOT BETWEEN 2 AND 7

---

like

值与另一个值相似,区分大小写

import { like } from "drizzle-orm";

db.select().from(table).where(like(table.column, "%llo wor%"));
SELECT * FROM table  WHERE table.column LIKE '%llo wor%'

notLike

值与某个其他值不相似,区分大小写

import { notLike } from "drizzle-orm";

db.select().from(table).where(notLike(table.column, "%llo wor%"));
SELECT * FROM table WHERE table.column NOT LIKE '%llo wor%'

---

not

所有条件都必须返回 false

import { eq, not } from "drizzle-orm";

db.select().from(table).where(not(eq(table.column, 5)));
SELECT * FROM table WHERE NOT (table.column = 5)

and

所有条件都必须返回 true

import { gt, lt, and } from "drizzle-orm";

db.select().from(table).where(and(gt(table.column, 5), lt(table.column, 7)));
SELECT * FROM table WHERE (table.column > 5 AND table.column < 7)

or

一个或多个条件必须返回 true

import { gt, lt, or } from "drizzle-orm";

db.select().from(table).where(or(gt(table.column, 5), lt(table.column, 7)));
SELECT * FROM table WHERE (table.column > 5 OR table.column < 7)

---