Skip to content

Commit

Permalink
发布博客,时间:2023-11-06 23:14:21
Browse files Browse the repository at this point in the history
  • Loading branch information
whp98 committed Nov 6, 2023
1 parent 7944d5d commit f9724dc
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/数据库/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
- [Mysql数据库](./Mysql数据库/)
- [Oracle数据库](./Oracle数据库/)
- [Redis缓存](./Redis缓存/)
- [数据库改造](./数据库改造/)
60 changes: 60 additions & 0 deletions docs/数据库/数据库改造/Oracle转mysql5.7语法.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Oracle转MySQL5.7语法

## ROW_NUMBER() OVER() 转会话变量
oracle语句
```sql
SELECT TR2.HH_CODE,
TR2.RANK,
TR2.RANK_NUM,
ROW_NUMBER() OVER (PARTITION BY TR2.HH_CODE ORDER BY TR2.DATE DESC) RN
FROM TABLE_XX TR2
WHERE TR2.DATE >='2022-10-10' and TR2.DATE < '2022-11-10'
```
mysql语句
```sql
SELECT TR2.HH_CODE,
TR2.RANK,
TR2.RANK_NUM,
(@row_number := CASE WHEN @prev_values = TR2.HH_CODE THEN @row_number + 1 ELSE 1 END) AS RN,
@prev_values := TR2.HH_CODE AS dummy
FROM TABLE_XX TR2
JOIN
(SELECT @row_number := 0, @prev_values := '') AS vars
WHERE TR2.DATE >= '2022-10-10'
and TR2.DATE < '2022-11-10'
order by TR2.HH_CODE, TR2.DATE desc
```
会话变量会在排序之后进行。如果多个字段分区就需要把多个字段拼起来赋值。

## NVL函数转 IFNULL 或者COALESCE

这个就不贴sql,主要注意部分是,coalesce这个多个变量的时候数据类型要注意这个函数两个库都可以用,但是数据类型要一致,要不然会报错。

## DECODE转 CASE WHEN THEN 语句
oracle语句
```sql
select decode(1,1,'','') from dual;
```
mysql语句
```sql
select case when 1=1 then '' else '' end from dual;
```

## MERGE INTO 转 先删除后插入(在java种完成数据数据更新后插入)

merge into 也可以用mysql的 insert on duplicate key代替前提是merge into 的关联条件是主键。

## LIST_AGG 使用 group_concat代替

如果需要排序,写法有些不同,注意一下。

## LAG函数进行改造,数据排序后把需要进行偏移关联的部分在java中实现

这个比较简单主要是一个for循环就搞定,主要注意偏移的量和取数据的时候的有序性。

## '||' 使用concat进行代替
这个需要注意 mysql的concat支持多变量数据,oracle只能两个变量,所以多拼接的时候需要嵌套concat


## MYSQL所有嵌套都必须有别名
oracle 的语句需要检查是不是都有别名。
2 changes: 2 additions & 0 deletions docs/数据库/数据库改造/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# 数据库改造
- [Oracle转MySQL5.7语法](./Oracle转mysql5.7语法.md)

0 comments on commit f9724dc

Please sign in to comment.