首页
关于
推荐
ByteVirt主机
Search
1
win10 锁屏壁纸 Windows聚焦不更新解决方法
467 阅读
2
SpringBoot 集成Logback实现rsyslog日志记录
396 阅读
3
群晖Docker搭建Redis集群
206 阅读
4
群晖自动更换登录页背景图为Bing壁纸
206 阅读
5
阿里云maven仓库慢的解决方法
116 阅读
数据库
群晖
maven
windows
docker
Java
登录
Search
标签搜索
群晖
壁纸
postgresql
数据库
mysql
windows
maven
阿里云
docker
代码搬运工
累计撰写
8
篇文章
累计收到
0
条评论
首页
栏目
数据库
群晖
maven
windows
docker
Java
页面
关于
推荐
ByteVirt主机
搜索到
1
篇与
的结果
2024-05-25
Postgresql不常用函数语法汇总
以下是在国产化适配国产中总结的一些mysql转pg的语法函数,分享出来供大家参考。1. 在mysql中,我们习惯使用 DATE_FORMAT 函数对时间日期进行格式化,在pg中我们使用 to_char 代替--- DATE_FORMAT用法 SELECT DATE_FORMAT(my_datetime, '%Y-%m-%d') AS formatted_date FROM my_table;--- to_char用法 SELECT to_char(my_datetime, 'YYYY-MM-DD') AS my_table;2.mysql里的 GROUP_CONCAT 用于将多行的值连接成一个字符串,pg中使用 string_agg代替--- GROUP_CONCAT的用法 GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) SELECT class, GROUP_CONCAT(name) AS student_names FROM students GROUP BY class;{alert type="info"}如果students表包含以下数据:classname1AAlice1ABob1BCharlie1BDavid那么查询的结果将是:classstudent_names1AAlice,Bob1BCharlie,David{/alert}--- string_agg的用法 string_agg(expression, delimiter) SELECT class, string_agg(name, ',') AS student_names FROM students GROUP BY class;{alert type="info"}如果students表包含以下数据:classname1AAlice1ABob1BCharlie1BDavid那么查询的结果将是:classstudent_names1AAlice,Bob1BCharlie,David{/alert}3.mysql的 DATE_SUB 函数用于从一个日期中减去指定的时间间隔,pg中使用间隔(interval)来进行日期的减法---使用DATE_SUB从当前日期减去 5 天 SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY); SELECT DATE_SUB('2023-10-23', INTERVAL 3 MONTH); SELECT DATE_SUB(your_date_column, INTERVAL 1 YEAR);---使用interval从当前日期减去 5 天 SELECT current_date - INTERVAL '5 days' AS new_date; SELECT current_date - INTERVAL '3 months' AS new_date; SELECT '2023-10-23'::date - INTERVAL '1 years' AS new_date;4.mysql的 find_in_set 函数用于查找一个字符串在逗号分隔的字符串列表中的位置,pg中使用ANY--- FIND_IN_SET用法 FIND_IN_SET(search_string, string_list) SELECT name FROM students WHERE FIND_IN_SET('swimming', hobbies) > 0;--- 使用ANY代替 SELECT CASE WHEN 'your_search_string' = ANY (string_to_array(your_column, ',')) THEN TRUE ELSE FALSE END AS is_present FROM your_table;5.mysql的 on duplicate update 在pg中使用 ON CONFLICT DO UPDATE 代替--- mysql用法 INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...) ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, ...;--- pg用法 INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...) ON CONFLICT (constraint_column) DO UPDATE SET column1 = value1, column2 = value2, ...;{alert type="warning"}constraint_column 是你希望避免冲突的唯一约束或主键列的名称{/alert}
2024年05月25日
69 阅读
0 评论
2 点赞