sql常用語句

远山伴痴人發表於2024-02-28

一、字串相關

1.根據指定字元替換

select replace(column_name, '舊字元', '新字元') from table_name;

2.擷取指定下標開始的指定長度字串

select substring(column_name ,start_index,字元長度) from table_name;

3.獲取指定字元的下標

select charindex('字元',column_name) from table_name;

4.反轉指定欄位資料

select reverse(column_name) from table_name;

5.獲取指定前幾個字元

select left(column_name,字元長度) from table_name;

6.獲取指定後幾個字元

select right(column_name,字元長度) from table_name;

二、時間相關

1.將時間轉為字串(24小時制)

select to_char(column_name,'yyyy-MM-dd HH24:mi:ss') from table_name;

2.將字串格式化為時間

select to_date('2024-02-29 14:11:24','yyyy-MM-dd HH24:mi:ss') from dual;

三、資料處理相關

1.查詢根據指定欄位去重(去除重複資料,保留id最大的重複資料)

select * from 表名 where id in (select id from
(select su.*, row_number() over (partition by 去重欄位名 order by su.id desc ) rn
from 表名 su where 其他條件 ) where rn = 1 )

2.查詢重複多餘的資料

select * from 表名 where id in (select id from
(select su.*, row_number() over (partition by 去重欄位名 order by su.id desc ) rn
from 表名 su where 其他條件 ) where rn != 1 )

3.distinct過濾重複資料,限制較大,要過濾和獲取較少的欄位推薦使用。

select distinct 欄位名1,欄位名2 from 表名 where 其他條件;

四、語法差異

1.truncate和delete

  • truncate 只能刪除table,delete可以刪除table、view等
  • 用delete刪除資料,表空間中其被刪除資料的表佔用的空間還在,便於以後的使用,另外它是“假相”的刪除,相當於windows中用delete刪除資料是把資料放到回收站中,還可以恢復,當然如果這個時候重新啟動系統(OS或者RDBMS),它也就不能恢復了!
    用truncate清除資料,記憶體中表空間中其被刪除資料的表佔用的空間會被立即釋放,相當於windows中用shift+delete刪除資料,不進回收站,不能夠恢復!
  • truncate 後面不能帶where條件,delete可以帶where條件。

相關文章