SQL 常用語句

2022-03-29 06:57:58 字數 2982 閱讀 2430

整理下工作中遇到的sql一些基本操作,免得下次要用忘記了

1.將int型格式化成字串,不足位數的前面補0:

select  id,'t'+right('00000000'+cast(id as nvarchar(8)),8) as num from test
2.表連線更新:

update a set number=b.num from  a

join b on a.id=b.id

3.建立sql 遞迴函式

create function [dbo].[f_getchildchapterid](@id int)

returns @tbchildid table (id int )--定義返回的表結構

asbegin

with f_getchildchapterid(id)

as

(

select id as id from chapter where parentid=@id

union all

select chapter .id from chapter

inner join f_getchildchapterid on f_getchildchapterid.id =chapter.parentid

) 

insert into @tbchildid select id from f_getchildchapterid

end
4.sql 函式 實現split ,做字串分割

create function [dbo].[split](

@source nvarchar(4000),--需要分隔的字串

@splitstr nvarchar(20))--分隔字元

returns @temp table(a nvarchar(100))--分隔後以**形式返回

asbegin

declare @i int

set @source=rtrim(ltrim(@source))--去除左右空格

格式化成xml後

5.將sql 資料表中根據某欄位,將多行合併成一行,這個方法很多

select id,namestr=stuff

( (select ','+name

from [test] where a.id=b.id for xml path('')),1,1,''

) from [test] b

group by id

6.sql 自增字段重置

--- 刪除原表資料,並重置自增列

truncate table tablename --truncate方式也可以重置自增字段

--重置表的自增欄位,保留資料

dbcc checkident (tablename,reseed,0)

-- 設定允許顯式插入自增列

set identity_insert tablename on

-- 當然插入完畢記得要設定不允許顯式插入自增列

set identity_insert tablename off

7.sql 某一字段相同的記錄只取一條

8.統計資料表中列數量,及某字段為空的行數  

select count(name) from syscolumns where id=(select id from sysobjects where xtype='u' and name='tb')

declare @s nvarchar(2000),@i int

set @i=0

declare @id nvarchar(100)

set @id='e3d0f16d-a520-4016-a84d-ef6195499691'

select @s=isnull(@s+'+',' select cast(sum(')+'case when nullif('+quotename(name)+','''') is null then 1 else 0 end',@i=@i+1

from syscolumns

where id=object_id('tb ')

select @s

exec(@s+')*1.0/ sum('+@i+') as decimal(18,2)) from tb where id like ''' + @id + '''')

sql常用語句

use myoa select from delete from department where departmentid 1 insert department departmentid,departmentname values 1,技術部 update department set depa...

sql常用語句

在sqlserver,簡單的組合sp spaceused和sp msforeachtable這兩個儲存過程,可以方便的統計出使用者 資料表的大小,包括記錄總數和空間占用情況,非常實用,在sqlserver2k和sqlserver2005中都測試通過。1.exec sp spaceused 表名 sq...

sql常用語句

第一種 行列互換思想,外層group by,使用case when then 我有乙個表,有兩個字段 收費專案 唯一值 收費金額。我想用sql按收費專案不同生成不同的字段,對應值是金額。如 房租 100 水電費 50 雜費 50 生成後的格式是 房租 水電費 雜費 100 50 50 請問,如何寫這...