Notion Blog
技术分享1 分钟阅读

PGSQL 常用操作

循环:

DO $$
DECLARE
i INTEGER := 1;
BEGIN
  WHILE i < 10000 LOOP

    //执行的sql

    i = i + 1;
  END LOOP;
END $$;

获取UUID V4

uuid_generate_v4()

7.30 psycopg2 返回的时间格式处理

psycopg2 返回的数据格式,可以不用转换

8.4 postgresql 查询json数据

postgresql 查询json数据

SELECT * FROM "public"."sc_config"  WHERE (node_content::json#>>'{value}')::text = 'TRIAL'

node_content : 表字段

value: json中的key

'TRIAL' :json中的值

标题展示json数据内容

>操作返回json对象,我们可以链式方式继续使用->>返回特定节点
SELECT    info ->> 'customer' AS customer FROM    orders WHERE    info -> 'items' ->> 'product' = 'Diaper'

postSQL:https://blog.csdn.net/eff666/article/details/105253974

8.5 SQL 随机查询一条数据

SQL 随机查询一条数据

SELECT * FROM public.sc_config order by random() limit 1

SELECT * FROM public.sc_config  order by random() limit 1

sql优化,只要一条数据后面加入 limit 1,查到就返回,不用一直去查询提高效率

22.6.17 集合查询

- 集合查询集合相等

SELECT * FROM sc_teacher WHERE languages::text[] = ARRAY['日语','法语'];

22.9.22 时间处理

SELECT now()::timestamp + '1 year'; --当前时间加1年

SELECT now()::timestamp + '1 month'; --当前时间加一个月

SELECT now()::timestamp + '1 day'; --当前时间加一天

SELECT now()::timestamp + '1 hour'; --当前时间加一个小时

SELECT now()::timestamp + '1 min'; --当前时间加一分钟

SELECT now()::timestamp + '1 sec'; --加一秒钟

select now()::timestamp + '1 year 1 month 1 day 1 hour 1 min 1 sec'; --加1年1月1天1时1分1秒

SELECT now()::timestamp + (col || ' day')::interval FROM table --把col字段转换成天 然后相加

SELECT  end_time + '-20 min' FROM "public"."sc_teacher_availability"

23.3.1 sql获取json格式的数据

select array_to_json(array_agg(row_to_json(t))) from (select * from sc_form_class WHERE uuid = 'cd57a469-e497-4bab-8543-5b4b76f47896') t

select array_to_json(array_agg(row_to_json(t))) from (需要查询的sql) t

23.11.21 pgsql删除json数据中的值

表中data字段为json数据

{"attendance": {

	"late": false,
	
	"total": 0,
	
	"absenteeism": false,
	
	"leave_early": false,
	
	"lesson_status": [
	
		"NORMAL"
		
		],
	
	"inoutDateComplete": true,
	
	"teacherInClassTime": "2023-11-21T13:14:15",
	
	"teacherOutClassTime": "2023-11-21T13:35:07"

}} 

把json数据中的lesson_status字段删除

update  sc_course_schedule set  data = jsonb_set(data, '{attendance}', jsonb_strip_nulls(data->'attendance')-'lesson_status') where uuid='13226c08-b40d-4b76-afef-1900d28da7a1'
update sc_course_schedule: 更新表sc_course_schedule中的数据
data = jsonb_set(data, '{attendance}', jsonb_strip_nulls(data->'attendance')-'lesson_status'): 更新data列中的jsonb数据:
data->'attendance': 取出data中键为attendance的jsonb对象
jsonb_strip_nulls(...): 删除attendance对象中的null值
data->'attendance' - 'lesson_status': 在attendance对象中删除键为lesson_status的元素,删除lesson_status数组
jsonb_set(data, '{attendance}', ...): 将处理后的attendance对象更新回data列的jsonb中
where uuid='13226c08...': 只更新uuid值为指定值的数据行

有关使用上的问题,欢迎您在底部评论区留言,一起交流~

读者评论

评论会同步写入该文在 Notion 中的页面底部(与正文同页,便于管理)。

0/1500

暂无评论,欢迎抢沙发。