整理下工作中遇到的sql一些基本操作,免得下次要用忘記了
1.將int型格式化成字串,不足位數的前面補0:
select id,'t'+right('00000000'+cast(id as nvarchar(8)),8) as num from test2.表連線更新:
update a set number=b.num from a3.建立sql 遞迴函式join b on a.id=b.id
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
end4.sql 函式 實現split ,做字串分割
create function [dbo].[split](格式化成xml後@source nvarchar(4000),--需要分隔的字串
@splitstr nvarchar(20))--分隔字元
returns @temp table(a nvarchar(100))--分隔後以**形式返回
asbegin
declare @i int
set @source=rtrim(ltrim(@source))--去除左右空格
5.將sql 資料表中根據某欄位,將多行合併成一行,這個方法很多
select id,namestr=stuff6.sql 自增字段重置( (select ','+name
from [test] where a.id=b.id for xml path('')),1,1,''
) from [test] b
group by id
--- 刪除原表資料,並重置自增列7.sql 某一字段相同的記錄只取一條truncate table tablename --truncate方式也可以重置自增字段
--重置表的自增欄位,保留資料
dbcc checkident (tablename,reseed,0)
-- 設定允許顯式插入自增列
set identity_insert tablename on
-- 當然插入完畢記得要設定不允許顯式插入自增列
set identity_insert tablename off
8.統計資料表中列數量,及某字段為空的行數
select count(name) from syscolumns where id=(select id from sysobjects where xtype='u' and name='tb')
declare @s nvarchar(2000),@i intset @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 請問,如何寫這...