如何将含嵌套AND/OR的SQL转成Prisma复杂条件查询?
将嵌套AND/OR条件的SQL转换为Prisma查询
Prisma完全支持嵌套的AND/OR组合查询,你提供的SQL可以直接转写成如下Prisma客户端代码:
const employees = await prisma.employee.findMany({ where: { AND: [ { OR: [ { firstname: { contains: 'Alex' } }, { firstname: { contains: 'Sean' } } ] }, { OR: [ { lastname: { contains: 'Dennard' } }, { lastname: { contains: 'Joy' } } ] }, { age: 10 }, { AND: [ { middlename: { startsWith: 'Ali' } }, { middlename: { not: { equals: 'Alish' } } } ] } ] } });
对应SQL条件的说明:
- SQL中
(firstname LIKE '%Alex%' OR firstname LIKE '%Sean%')→ Prisma用OR数组配合contains实现(%xxx%模糊匹配对应contains) - SQL中
(lastname LIKE '%Dennard%' OR lastname LIKE '%Joy%')→ 同上逻辑,对应lastname的OR条件数组 - SQL中
age = 10→ 直接写age: 10即可 - SQL中
(middlename LIKE 'Ali%' AND middlename NOT LIKE 'Alish')→ 用AND数组,startsWith('Ali')对应LIKE 'Ali%',not: { equals: 'Alish' }对应NOT LIKE 'Alish'
如果需要忽略大小写匹配,可以给contains或startsWith添加mode: 'insensitive'参数,比如:
{ firstname: { contains: 'Alex', mode: 'insensitive' } }
内容的提问来源于stack exchange,提问作者Teknoville
相关产品推荐
相关产品推荐

