首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用not in函数时,codeigniter 3中的Postgresql查询返回null

在CodeIgniter 3中,当使用PostgreSQL进行查询时,如果使用了not in函数,可能会返回null。这是因为not in函数在PostgreSQL中的行为与其他数据库不同。

在PostgreSQL中,not in函数会在查询结果为空时返回null,而不是返回true或false。这是因为not in函数的结果取决于查询的结果集是否为空。

为了解决这个问题,可以使用exists子查询来替代not in函数。exists子查询可以判断某个条件是否存在于子查询的结果集中。

以下是一个示例代码,演示了如何使用exists子查询来替代not in函数:

代码语言:txt
复制
$query = $this->db->select('*')
    ->from('table')
    ->where('NOT EXISTS', function($subquery) {
        $subquery->select('*')
            ->from('other_table')
            ->where('other_table.column', 'table.column');
    })
    ->get();

在上面的示例中,我们使用了exists子查询来判断other_table中是否存在与table中的column相等的记录。如果不存在,则返回该记录。

需要注意的是,上述示例中的table和other_table是示意性的表名,实际使用时需要替换为相应的表名。

关于CodeIgniter 3和PostgreSQL的更多信息,您可以参考腾讯云的相关产品和文档:

希望以上信息能够帮助到您!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Postgresql源码(50)语法解析关键字判定原理(函数名不能使用关键字为例)

相关: 《Postgresql源码(44)server端语法解析流程分析》 《Postgresql源码(50)语法解析关键字判定原理(函数名不能使用关键字为例)》 关键字报错场景 关键字不出现...; 从下面这里开始有问题了,函数名normalize被解析成关键字了,base_yylex返回是NORMALIZE,如果是普通函数名应该返回IDENT。...如果匹配到关键字,就会返回gram.c中enum yytokentype关键字。...这些标识符主要是给lex使用,在lex匹配到正则规则返回其中一个token。...但其实很多也不会触发冲突,为了使用这些关键字,在gram.y文件后面专门定义了几组语法规则: unreserved_keyword:可以用于任意命名场景,如果新增关键字不会引发shift/reduce

79130
  • tp5.1 框架join方法用法实例分析

    分享给大家供大家参考,具体如下: JOIN方法用于根据两个或多个表中列之间关系,从这些表中查询数据。join通常有下面几种类型,不同类型join操作会影响返回数据结果。...INNER JOIN: 等同于 JOIN(默认JOIN类型),如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配...,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行 说明 join ( mixed join [, mixed $condition = null [, string $type...condition = null ] ) fullJoin ( mixed join [, mixed $condition = null ] ) 参数 join 要关联(完整)表名以及别名 支持写法...: 写法1:[ ‘完整表名或者子查询’= ‘别名’ ] 写法2:’不带数据表前缀表名’(自动作为别名) 写法2:’不带数据表前缀表名 别名’ condition 关联条件。

    1.5K20

    PHP面试题,面试必看!

    $_GET,现在可以通过‘param’获取,具体使用可以通过请求部分查询。...==2、模型变动== 新版模型查询返回默认‘对象’,系统默认增加了’toArray’方法,许多开发者在’all’或’select’尝试使用’toArray’来 转换为数组,在此希望开发者能理解‘对象...env环境文件,方便了系统配置和不同平台开发 ==Lavarel缺点==: 1.基于组件式框架,所以比较臃肿 ==CodeIgniter简单介绍==:CodeIgniter 是一套小巧但功能强大...name`='张三' 请使用PHP连接MySQL,选择出”user”表里age > 22所有记录打印结果,并统计出查询结果总数 $con = mysql_connect('localhost','...建议: 1、get方式安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式; 2、在做数据查询,建议用Get方式;而在做数据添加、修改或删除,建议用Post方式; 如何获取指定网址里

    2K20

    TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】

    分享给大家供大家参考,具体如下: 使用model 查询数据,添加数据,修改数据,删除数据 聚合操作 获取器,修改器 自动添加时间戳(创建时间,修改时间) 软删除 1、使用model查询数据 $res =...里 name 字段值 //使用闭包函数查询 id=1 记录 $res = User::get(function($query){ $query- where("id","eq",1)...1 或2 记录 foreach($res as $val) //转化为数组 { dump($val- toArray()); } //使用闭包函数查询 id<5 记录 $res = User...' ]); 4、使用model删除数据 $res = User::destriy(1); //删除主键为1记录,返回影响数据行数,也可以传递数组 $usermodel = User...// model // 数据表中字段 delete_time,默认值可以为 null use traits\model\SoftDelete; //使用软删除类 class User extends

    1.2K30

    -控制器

    考虑下面的 URI: example.com/index.php/blog/ 上例中,CodeIgniter 将会尝试查询一个名为 Blog.php 控制器并加载它。...定义默认控制器 CodeIgniter 可以设置一个默认控制器,当 URI 没有分段参数加载,例如当用户直接访问你网站首页。...这个参数可以使用 PHP call_user_func_array() 函数来模拟 CodeIgniter 默认行为。...构造函数没有返回值,但是可以执行一些默认操作。 包含属性 你创建每一个 controller 都应该继承 CodeIgniter\Controller 类。这个类提供了适合所有控制器几个属性。...辅助函数 你可以定义一个辅助文件数组作为类属性。每当控制器被加载, 这些辅助文件将自动加载到内存中,这样就可以在控制器任何地方使用它们方法。

    3.6K20

    PostgreSQL 教程

    IS NULL 检查值是否为空。 第 3 节. 连接多个表 主题 描述 连接 向您展示 PostgreSQL 中连接简要概述。 表别名 描述如何在查询使用表别名。...INTERSECT 组合两个或多个查询结果集并返回一个结果集,该结果集行都出现在两个结果集中。 EXCEPT 返回第一个查询中未出现在第二个查询输出中行。 第 6 节....ANY 通过将某个值与子查询返回一组值进行比较来检索数据。 ALL 通过将值与子查询返回值列表进行比较来查询数据。 EXISTS 检查子查询返回行是否存在。 第 8 节....条件表达式和运算符 主题 描述 CASE 向您展示如何使用CASE表达式构成条件查询。 COALESCE 返回第一个非空参数。您可以使用它将NULL替换为一个默认值。...PostgreSQL 函数 PostgreSQL 为内置数据类型提供了大量函数。本节向您展示如何使用一些最常用 PostgreSQL 函数

    55110

    前后端分离跨域问题

    二、跨域问题 由于浏览器 同源策略 限制,使用前后端分离模式下,前端和后端域名一般都不是一样,在我项目中,前端是使用二级域名,而后端是使用三级域名,此时前后端就不同源了,就产生了跨域问题。...三级域名 CodeIgniter4 三、解决方法 1.问题 在前端往后端发送请求,控制台会输出跨域报错,无法拿到数据。...此时我们需要用到CodeIgniter4中控制器过滤器里面的 前置过滤器 。 前置过滤器官方文档 然后在前置过滤器中完成响应头设定即可。...cors' => CorsFilter::class ]; public $globals = [ 'before' => [ // 配置生效页面,except里面配置不生效页面...使用 自定义请求头 ,前端(客户端浏览器)会先发出一个OPTIONS请求,来判断是否可用,如果这时候没有进行设置的话,同样也是无法完成跨域

    2.5K30

    概述-服务

    其他文件,例如模型和库,应将依赖项传递到构造函数中或通过setter方法传递。 方便功能 提供了两种功能来获得服务。这些功能始终可用。 第一个是service()返回所请求服务新实例。...这与Services文件中方法名称始终返回该类SHARED实例相同,因此多次调用该函数应始终返回同一实例: $logger = service('logger'); 如果创建方法需要其他参数,则可以在服务名称之后传递它们...views/'); 第二个函数single_service()工作原理类似,service()但返回新实例: $logger = single_service('logger'); 定义服务 为了使服务正常运行...几乎所有CodeIgniter类都提供了它们遵循接口。当您要扩展或替换核心类,只需要确保满足接口要求并且知道这些类是兼容即可。...当您想创建一个提供不同方式创建路由替代品,只需创建一个实现以下内容新类RouterCollectionInterface: class MyRouter implements \CodeIgniter

    1.7K10

    tp5.1 框架查询表达式用法详解

    分享给大家供大家参考,具体如下: 查询表达式 查询表达式支持大部分SQL查询语法,也是ThinkPHP查询语言精髓,查询表达式使用格式: where('字段名','表达式','查询条件'); whereOr...('字段名','表达式','查询条件'); 5.1还支持新查询方法 whereField('表达式','查询条件'); whereOrField('表达式','查询条件'); Field使用字段驼峰命名方式...NOT NULL 如果你需要查询一个字段值为字符串null或者not null,应该使用: Db::name('user')- where('title','=', 'null') - where(...'name','=', 'not null') - select(); 推荐方式是使用whereNull和whereNotNull方法查询。...,所以后面的查询条件可以使用任何SQL支持语法,包括使用函数和字段名称。

    1.3K21

    Oracle到PostgreSQL数据库语法迁移手册(建议收藏)

    2 虚拟列 虚拟列rownum 对于查询返回每行数据,rownum虚拟列会返回一个数字,第一行ROWNUM为1,第二行为2,以此类推。...值进行处理,如果col为null,则返回v1, 否则返回v2; postgre中没有类似的函数,可以重写为case... when......用来取一个字符串子串位置,当其只有两个参数,表示子串第一次出现位置,和PostgreSQL中对应函数为strpos。...当没有group by子句,可以使用over(partiton by... order by...)进行替换 当指定group by子句,它重写算法比较复杂 如果需要保持拼接顺序,需要通过子查询来实现...' last_day(date) Oracle中last_day返回指定日期所在月份最后一天; 在PostgreSQL没有对应函数,需将其转化为基于日期和interval运算。

    16410

    讲解-加载静态页

    本教程将主要关注: 模型-视图-控制器基础知识 路由基础 表格验证 使用查询生成器”执行基本数据库查询 整个教程分为几页,每页仅解释CodeIgniter框架功能一小部分。...如果不存在,会显示 "404 Page not found" 错误页面。 此事例方法中,第一行用以检查界面是否存在,file_exists() 是原生 PHP 函数,用于检查某个文件是否存在。...PageNotFoundException 是 CodeIgniter 内置函数,用来展示默认错误页面。...当你访问 index.php/pages/view/about 你将看到包含页头和页脚 about 页面。...当获取到请求CodeIgniter 首先查找能匹配到第一条规则,然后调用相应可能存在参数控制器和方法。 你可以在关于 URL路由文档 中找到更多信息。

    3.6K10

    Ubuntu 16.04如何使用PostgreSQL全文搜索

    这意味着当用户搜索“猫和狗”,例如,由FTS支持应用程序能够返回单独包含单词结果(只是“猫”或“狗”),包含不同顺序单词(“狗和猫”),或包含单词变体(“猫”或“狗”)。...这为应用程序提供了猜测用户想法并更快地返回更相关结果优势。 从技术上讲,像PostgreSQL这样数据库管理系统(DBMS)通常允许使用LIKE子句进行部分文本查找。...在本教程中,我们将使用PostgreSQL存储包含假设新闻网站文章数据,然后学习如何使用FTS查询数据库并仅选择最佳匹配。最后一步,我们将对全文搜索查询实施一些性能改进。...首先,我们需要使用PostgreSQL连接函数||和转换函数to_tsvector()将所有列放在一起。...第三步 - 提高FTS性能 每次使用FTS查询生成文档在使用大型数据集或较小服务器都会成为性能问题。我们将在此实现一个很好解决方案是在插入行时生成转换后文档,并将其与其他数据一起存储。

    2.7K60

    HAWQ技术解析(十) —— 过程语言

    图3 四、表函数         表函数返回多行结果集,调用方法就像查询一个from子句中表、视图或子查询。如果表函数返回单列,那么返回列名就是函数名。...图4         与PostgreSQL不同,HAWQ函数不能用于表连接。在PostgreSQL中以下查询可以正常执行,如图5所示。...当这种函数用于查询,必须由查询本身指定返回行结构。下面的例子使用动态SQL,返回结果集依赖于作为入参查询语句。...多态函数同一参数在每次调用函数可以有不同数据类型,实际使用数据类型由调用函数传入参数所确定。        ...多态参数和返回值是相互绑定,当一个查询调用多态函数,特定数据类型在运行时解析。

    4.2K50

    CI框架实现创建自定义类库方法

    存储位置 你类库文件应该放置在 application/libraries 目录下,当你初始化类CodeIgniter 会在这个目录下寻找这些类。...一旦加载,你就可以使用小写字母名称来访问你类: $this- someclass- some_method(); 初始化类传入参数 在加载类库时候,你可以通过第二个参数动态传递一个数组数据,该数组将被传到...params); 如果你使用了该功能,你必须在定义类构造函数加上参数: <?...在你类库中使用 CodeIgniter 资源 在你类库中使用 get_instance() 函数来访问 CodeIgniter 原生资源,这个函数返回 CodeIgniter 超级对象。...: class MY_Email extends CI_Email { } 如果你需要在你类中使用构造函数,确保你调用了父类构造函数: class MY_Email extends CI_Email

    2.5K31

    PawSQL周更新 | 新增6个SQL审查重写规则

    避免COUNT DISTINCT多个可空列 当你使用COUNT (DISTINCT) 进行多列计算,它计算结果可能和你预想不同。...as a_b_cnt from (values row(1,2),row(3,null)) as t(a,b); 返回结果如下: a_cnt a_b_cnt 2 1 对于列a返回2,而对于列组合(a...NPE问题重写 SQLNPE(Null Pointer Exception)问题是指在SQL查询中,当聚合列全为NULL,SUM、AVG等聚合函数返回NULL,这可能会导致后续程序出现空指针异常...语法 触发条件 SUM或AVG聚集函数 聚集函数参数可能全为NULL, 包括 参数是列,列定义可以为空 参数是表达式,表达式可以为空 列定义不可为空,但是是外连接内表,结果可能为空 数据库类型及版本...可以通过添加order by null来强制取消排序,禁用查询结果集排序;PawSQL对此语法结构进行了识别并提供了重写建议。

    8510
    领券