sql常用语句

一、字符串相关

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 其他条件;

4.sql查询,将某个字段值设置为固定的,适用于固定值的匹配,例如学生表性别匹配

select name,
case sex
when 1 then '男'
when 0 then '女'
else
'未定义'
end as sex

from student

数据源:

 查询结果:

 5.行转列拼接(仅适用oracle数据库)

  (1)将多行数据,根据某一列(或两列)分组,另一列按照特定规则拼接,例如:将相同部门的人员转为一条数据,并用“,”拼接起来  

        数据如下:

 sql和结果:

1
select organname,listagg(name, ', ') within group (order by name) as username from userinfo group by organname

(2)将多字段行转列拼接

新增性别字段:

将姓名和性别拼接到一起,再进行行转列:

 select organname,listagg(name || '-' || sex, ', ') within group (order by name) as username from userinfo group by organname

 (3)将多列的值拼接到一个字段并且字符很长时,可以使用xmlagg生成clob字段

1
2
select organname, RTRIM(XMLCAST(XMLAGG(XMLELEMENT(e, name || ' - $' || sex) ORDER BY name) AS CLOB), ', ') AS info
FROM userinfo GROUP BY organname;

  

 

 

四、语法差异

1.truncate和delete

  • truncate 只能删除table,delete可以删除table、view等
  • 用delete删除数据,表空间中其被删除数据的表占用的空间还在,便于以后的使用,另外它是“假相”的删除,相当于windows中用delete删除数据是把数据放到回收站中,还可以恢复,当然如果这个时候重新启动系统(OS或者RDBMS),它也就不能恢复了!
    用truncate清除数据,内存中表空间中其被删除数据的表占用的空间会被立即释放,相当于windows中用shift+delete删除数据,不进回收站,不能够恢复!
  • truncate 后面不能带where条件,delete可以带where条件。

 

本文作者:远山伴痴人

本文链接:https://www.cnblogs.com/BKYhailong/p/18041095

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   远山伴痴人  阅读(131)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
展开
🔑
  1. 1 404 not found REOL
  2. 2 Lemon 米津玄師
Lemon - 米津玄師
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 米津玄師

作曲 : 米津玄師

夢ならばどれほどよかったでしょう

未だにあなたのことを夢にみる

忘れた物を取りに帰るように

古びた思い出の埃を払う

戻らない幸せがあることを

最後にあなたが教えてくれた

言えずに隠してた昏い過去も

あなたがいなきゃ永遠に昏いまま

きっともうこれ以上 傷つくことなど

ありはしないとわかっている

あの日の悲しみさえ

あの日の苦しみさえ

そのすべてを愛してた あなたとともに

胸に残り離れない

苦いレモンの匂い

雨が降り止むまでは帰れない

今でもあなたはわたしの光

暗闇であなたの背をなぞった

その輪郭を鮮明に覚えている

受け止めきれないものと出会うたび

溢れてやまないのは涙だけ

何をしていたの

何を見ていたの

わたしの知らない横顔で

どこかであなたが今

わたしと同じ様な

涙にくれ 淋しさの中にいるなら

わたしのことなどどうか 忘れてください

そんなことを心から願うほどに

今でもあなたはわたしの光

自分が思うより 恋をしていたあなたに

あれから思うように 息ができない

あんなに側にいたのにまるで嘘みたい

とても忘れられないそれだけが確か

あの日の悲しみさえ

あの日の苦しみさえ

その全てを愛してたあなたと共に

胸に残り離れない

苦いレモンの匂い

雨が降り止むまでは帰れない

切り分けた果実の片方の様に

今でもあなたはわたしの光