SQL Server日常總結生僻小技巧 10個可能有八個平時都沒用到過

--1.統計指定行的乘積:EXP(SUM(LOG(字段)))
IF OBJECT_ID('tempdb.dbo.#a') IS NOT NULL DROP TABLE #a
CREATE TABLE #a(i INT ,j FLOAT)
INSERT #a VALUES(1,1.23)
INSERT #a VALUES(1,0.59)
INSERT #a VALUES(1,0.94)
INSERT #a VALUES(2,1.02)
INSERT #a VALUES(2,0.63)
INSERT #a VALUES(3,0.98)

SELECT *FROM #a

SELECT i,EXP(SUM(LOG(J))) FROM #a GROUP BY i


--2.沒有自增列的情況下去除重複項
IF OBJECT_ID('tempdb.dbo.#RepeatData') IS NOT NULL DROP TABLE #RepeatData
CREATE TABLE #RepeatData(a INT,b INT ,c INT,d INT ,e VARCHAR(100),f VARCHAR(100))
INSERT #RepeatData SELECT 1,2,3,4,'中國','深圳'
INSERT #RepeatData SELECT 1,2,3,4,'中國','深圳'
INSERT #RepeatData SELECT 1,2,3,4,'中國','北京'
INSERT #RepeatData SELECT 1,2,3,4,'中國','北京'
INSERT #RepeatData SELECT 1,2,3,4,'中國','上海'
INSERT #RepeatData SELECT 1,2,3,4,'中國','上海'

;with tt as(
select *,ROW_NUMBER()over(PARTITION BY a,b,c,d,e,f ORDER by f)num from #RepeatData
)
delete tt where num>1

SELECT *FROM #RepeatData

--3.按字符串大小寫模糊匹配
select * from 表 where 字段 collate chinese_prc_cs_as_ws like 'A%' (查大寫 )
select * from 表 where 字段 collate chinese_prc_cs_as_ws like 'a%' (查小寫 )

--4.數據轉換時,想要去掉Float到Varchar的科學計數法,用Cast轉換兩次即可。Float--->>Decimal--->>Varchar
declare @aa varchar(50)
set @aa='6.22345e+16'
select Convert(numeric,Convert(float,@aa))   

select cast(cast(字段 as decimal(18,0)) as varchar)

--5.大表分批刪除SQL腳本
WHILE 1=1
BEGIN
    DELETE TOP (5000) FROM TB
    WHERE SYSDATE <= '2013-12-31'
    IF @@ROWCOUNT < 5000
        BREAK;
    WAITFOR DELAY '00:00:01'
END

--6.根據月份返回英文對應前綴
SELECT SubString('JanFebMarAprMayJunJulAugSepOctNovDec',Month(GETDATE())*3-2,3)

SELECT case Month(GETDATE()) when 1 then 'Jan' when 2 then 'Feb' when 3 then 'Mar'
when 4 then 'Apr' when 5 then 'May' when 6 then 'Jun' when 7 then 'Jul' when 8 then 'Aug'
when 9 then 'Sep' when 10 then 'Oct' when 11 then 'Nov' when 12 then 'Dec' else 'No' END

--7.存儲過程執行結果字段不固定情況下插入數據到臨時表
IF OBJECT_ID('tempdb.dbo.#UR_ResultData') IS NOT NULL DROP TABLE #UR_ResultData
SELECT * INTO #UR_ResultData FROM OPENROWSET('SQLNCLI', '鏈接服務器地址';'用戶名';'密碼', '
SET NOCOUNT ON;SET FMTONLY OFF;
EXEC 存儲過程名
@整型參數1 = 整型值,        
@字符串參數2 =''字符串值''
')

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章