sql语句汇总

这篇博客汇总了SQL的各种常用语句,包括函数(如拼接、截取)、字符串处理、转换函数、分组查询、循环语句、条件判断等,适用于SQLServer、MySQL和Oracle等数据库。通过实例展示了如何使用这些语句进行数据操作,对于数据库开发者和管理员非常有帮助。
摘要由CSDN通过智能技术生成

https://www.cnblogs.com/accumulater/p/6088980.html--普通SQL语句可以用Exec执行

https://blog.csdn.net/qq_36482772/article/details/77815021--自定义带输入参数的存储过程

默认的SQLServer

''附近有错误,把空格都去了重新空,

一,函数

1,拼接函数

SELECT'123'+'123'AS result1;

使用 cast

select '+' cast(2 as varchar)

第二种方法:

select (stuff((select '+' + nNum from table for xml path ('')),1,1,''))   //nNum是 int类型

使用 RTRIM

select (stuff((select '+' + RTRIM(nNum) from table for xml path ('')),1,1,''))   //nNum是 int类型

MySQL的:

SELECT CONCAT(123,'123')AS result1; ---- 123123

SELECT CONCAT_WS(':','abc','def')AS result1; ------ ABC:DEF

 

--------------------- --------------------- -------- ------------- --------------------- 

根据某字段分组拼接

shop_id fruit_name 
    1桃子 
    1梨子 
    2香蕉 
    3苹果 
    2草莓 

从shop_id中选择t_fruit group中的shop_id,GROUP_CONCAT(fruit_name);

--------------------- --------------------- -------- ------------- --------------------- 

SQLServer的:不同数据类型拼接要处理 - 数字与字符串拼接

从用户中选择'id_'+ convert(varchar(50),id)

2,截取字符串

离开(pid,17)

对(pid,1)

SUBSTRING(pid,1,17)

3,CONVERT()函数是把日期转换为新数据类型的通用函数

把20181108改成 - > 2018-11-08 CONVERT(varchar(10),CONVERT(datetime,zzrq,10),23)

--update xxcw..cbm set zzrq = CONVERT(varchar(10),CONVERT(datetime,zzrq,10),23)

其中bmh(从RES_projects中选择zw_prjcode)和zzrq <>''和zzrq不像'% - %'

如图4所示,不以字母开头的数据

select * from saap_users where user_id like '[^A-Zz-z]%'

5、去左右空格

select ltrim(rtrim(UsrName))

6、exists用法

select * from res_projects a where exists(select rp_code from aky b where a.rp_code = b.部门号) and a.rp_status is null

数据库里面就算有一列数据不相等都不能用exists判断是否存在,select查出相等列来判断exists也不奏效,这种情况要用in

7、in 用法

表1把相等用来判断同一条数据的那几列查出来,作为条件拼接not in表2,表2将这些列拼接

例:select * from (select id, name, pid from table1) a

       where  (convert(varchar(50), a.id)+ convert(varchar(50), a.name)+ convert(varchar(50), a.pid)) not in

       (select (convert(varchar(50), id)+ convert(varchar(50), name)+ convert(varchar(50), pid)) from table2) 
8、group by分组,用于去重,查询列要和group by保持一致

9、case when

        CASE c.continue_flag WHEN 0 THEN '项目延续' WHEN 1 THEN '新增项目' WHEN 2 THEN '项目延续' ELSE null END as '项目类型'

10、循环语句

declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end

---------------

while 条件
begin
执行操作
set @i=@i+1
end

WHILE

11、左侧自动补零

例如 ‘49999’ 五位 自动补零 ‘0049999’
      ‘1000000’七位不变 ‘1000000’
请问怎么实现?

--> 查询结果

SELECT right('000000'+cast(id as varchar),7) as id

12、添加自然序号 从1开始递增

a.通过rownum实现即可。
sql:select rownum , * from tablename where 条件语句。

b.Row_Number()over(order by ID)

 

实例:

insert into 
    BGT_projects (fp_code,fp_type,fp_name,dpt_code,fp_status,dpt_name) 
SELECT 
    '20191225'+ cast(right('00'+cast(Row_Number()over(order by user_id) as varchar),2) as varchar),1,'部门预算项目(二上)',depart_code,0,depart_name 
FROM 
    SAAP_users 
WHERE 
    SEX = 'D'

13、去空格

select ltrim('  test  ')        --去除左边的空格 
select rtrim('  test  ')        --去除右边的空格 
select ltrim(rtrim('  test  ')) --去除首尾空格 

14、分页    currentPage 第几页   pageSize 每页数据条数

mysql:limit m,n     【m:开始位置 (不包含当前位置,或者理解为从0开始)----  n:从开始位置开始一共取多少条

limit (currentPage-1)*pageSize,pageSize

SqlServer:            【@Star:开始位置(不包含当前位置,或者理解为从0开始)-----   @End:结束位置(含当前位置)

DECLARE @Start INT
DECLARE @End INT
SELECT @Start = (currentPage-1)*pageSize,@End = currentPage*pageSize;
WITH EmployeePage AS (SELECT *, ROW_NUMBER() OVER (ORDER BY user_id) AS RowNumber FROM Emp)
SELECT * FROM EmployeePage WHERE RowNumber > @Start AND RowNumber <= @End ORDER BY user_id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值