風雲論壇后台开发 → 浏览:帖子主题
* 帖子主题:SQLite 中调用 PHP 方法查询数据
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 1 楼 ] 回复
最近在 php 8.1 中使用 sqlite(v3.40) 的 regexp 方法查询时发现 pdo_sqlite 居然没有 regexp 方法,而实际测试 sqlite3 命令(v3.39)是已经内置了 regexp 方法的。于是想办法让 sqlite 调用 php 方法来实现正则查询。

代码如下:
$pdo = new PDO('sqlite::memory:');
$pdo->sqliteCreateFunction('regexp', function($pattern, $str) { return preg_match('/' . $pattern . '/', $str); }, 2);
sqiteCreateFunction 第三个参数为自定义方法的参数数量,此处为 2 个。

调用示例:
select regexp('[a-f]', 'hello')
或者
select 'hello' regexp '[a-f]'
2023/12/22 23:08:09 IP:已设置保密
pojin (ID: 2)
等级:风云使者
积分:309
发帖:2
来自:保密
注册:2022/3/30 11:42:27
造访:2024/11/22 10:40:00
[ 第 2 楼 ] 回复
非常good
2023/12/23 21:35:30 IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 3 楼 ] 回复
SQLite 和 pgsql 的合并 json 方法
SQLite:
select json_patch('{"a":1}', '{"b":2}')
pgsql:
select {"a":1}'::jsonb || '{"b":2}'

类似 js 的 Object.assign 方法,得到的结果是后者覆盖前者的合并值。需要注意的是,pgsql 仅支持 jsonb 合并,不支持 json
2024/3/19 18:05:06 IP:已设置保密
pojin (ID: 2)
等级:风云使者
积分:309
发帖:2
来自:保密
注册:2022/3/30 11:42:27
造访:2024/11/22 10:40:00
[ 第 4 楼 ] 回复
赞!!
2024/3/20 9:09:16 IP:已设置保密
分页: 1, 共 1 页
快速回复主题
账号/密码
用户: 没有注册? 密码:
评论内容