成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

sql server(常用)

DevYK / 2399人閱讀

摘要:如果或?yàn)樨?fù),則返回空字符串。當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行復(fù)雜操作時(shí)如對(duì)多個(gè)表進(jìn)行時(shí),可將此復(fù)雜操作用存儲(chǔ)過(guò)程封裝起來(lái)與數(shù)據(jù)庫(kù)提供的事務(wù)處理結(jié)合一起使用??梢浦残圆钣捎诖鎯?chǔ)過(guò)程將應(yīng)用程序綁定到,因此使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯將限制應(yīng)用程序的可移植性。

普通用法
//生成 uuid 并轉(zhuǎn)為小寫(xiě)
select LOWER(SUBSTRING(uuid,1,8)+"-"+SUBSTRING(uuid,10,4)+"-"+SUBSTRING(uuid,15,4)+"-"+SUBSTRING(uuid,20,4)+"-"+SUBSTRING(uuid,25,12)) 
from (select cast(NEWID() as varchar(36)) as uuid) s  //ea52a7bb-a2aa-44b8-be28-5ebc64defcf9

//獲取時(shí)分秒
select DateName(hour,GetDate())+ DateName(minute,GetDate())+DateName(second,GetDate()) //143054

//1000-9999隨機(jī)數(shù)
select floor(9000*RAND()+1000)

//日期格式化
select GETDATE()                            //2019-02-12 14:30:16.763
Select CONVERT(varchar(100), GETDATE(), 8)  //10:57:46
Select CONVERT(varchar(100), GETDATE(), 12) //060516
Select CONVERT(varchar(100), GETDATE(), 20) //2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21) //2006-05-16 10:57:47.157    
Select CONVERT(varchar(100), GETDATE(), 23) //2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24) //10:57:47
Select CONVERT(varchar(100), GETDATE(), 25) //2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 102)//2006.05.16
Select CONVERT(varchar(100), GETDATE(), 111)//2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112)//20060516
進(jìn)階 order by group by

我們經(jīng)常會(huì)使用group by對(duì)查詢的結(jié)果進(jìn)行去重,但是在使用的過(guò)程中一定要確保 group by 里面要只是有一個(gè)唯一性的條件,否則極有可能把需要的條目去重了,導(dǎo)致查詢結(jié)果異常,而且這個(gè)問(wèn)題排查難度不小

聯(lián)表查詢 SQL查詢多列合并一列
select ID,hosID +"/"+ hosCode +"/"+ name as "診所編號(hào)/診所Code/醫(yī)生項(xiàng)目"
from Doctor where hosCode = "xxxx"
//return: 71bfc474-7725-e8fb-ecbd-a204bbaxxxxx 15xx/A75xxx/宋xx
SQL查詢將多行合并成一行(轉(zhuǎn)載)
//將param1中自startIndex(SQL中都是從1開(kāi)始,而非0)起,刪除length個(gè)字符,然后用param2替換刪掉的字符。
stuff(param1, startIndex, length, param2)

param1:一個(gè)字符數(shù)據(jù)表達(dá)式。param1可以是常量、變量,也可以是字符列或二進(jìn)制數(shù)據(jù)列。
startIndex:一個(gè)整數(shù)值,指定刪除和插入的開(kāi)始位置。如果 startIndex或 length 為負(fù),則返回空字符串。如果startIndex比param1長(zhǎng),則返回空字符串。startIndex可以是 bigint 類(lèi)型。
length:一個(gè)整數(shù),指定要?jiǎng)h除的字符數(shù)。如果 length 比param1長(zhǎng),則最多刪除到param1 中的最后一個(gè)字符。length 可以是 bigint 類(lèi)型。

例如:

select STUFF("abcdefg",1,0,"1234")       --結(jié)果為"1234abcdefg"
select STUFF("abcdefg",1,1,"1234")       --結(jié)果為"1234bcdefg"
select STUFF("abcdefg",2,1,"1234")       --結(jié)果為"a1234cdefg"
select STUFF("abcdefg",2,2,"1234")       --結(jié)果為"a1234defg"

拓展:for xml path,將查詢結(jié)果集以XML形式展現(xiàn)

現(xiàn)在想把兩條數(shù)據(jù)通過(guò)PerworkSampleInfoId和Barcode合并成一條

select ID,PerworkSampleInfoId,Barcode, ApplyItemId,ApplyItemName,ItemPrice
from Perwork_SampleItem where Barcode = "A75004xxxxxx"

select PerworkSampleInfoId,Barcode,
    (
        select STUFF(
            (select "," + ApplyItemName from Perwork_SampleItem where Barcode = a.Barcode for xml path("")),
            1,
            1,
            ""        
        )
    ) as ApplyItemNames,
    (
        select STUFF (
            (select sum(ItemPrice) from Perwork_SampleItem where Barcode = a.Barcode),
            1,
            0,
            ""
        )
    )as totalItemPrice
from Perwork_SampleItem a
where Barcode = "A75004xxxxxx"
group by PerworkSampleInfoId,Barcode

視圖 存儲(chǔ)過(guò)程

優(yōu)點(diǎn):

   1.存儲(chǔ)過(guò)程只在創(chuàng)造時(shí)進(jìn)行編譯,以后每次執(zhí)行存儲(chǔ)過(guò)程都不需再重新編譯,而一般SQL語(yǔ)句每執(zhí)行一次就編譯一次,所以使用存儲(chǔ)過(guò)程可提高數(shù)據(jù)庫(kù)執(zhí)行速度。

  2.當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行復(fù)雜操作時(shí)(如對(duì)多個(gè)表進(jìn)行Update,Insert,Query,Delete時(shí)),可將此復(fù)雜操作用存儲(chǔ)過(guò)程封裝起來(lái)與數(shù)據(jù)庫(kù)提供的事務(wù)處理結(jié)合一起使用。

  3.存儲(chǔ)過(guò)程可以重復(fù)使用,可減少數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的工作量

  4.安全性高,可設(shè)定只有某此用戶才具有對(duì)指定存儲(chǔ)過(guò)程的使用權(quán)

缺點(diǎn):

   1.如果更改范圍大到需要對(duì)輸入存儲(chǔ)過(guò)程的參數(shù)進(jìn)行更改,或者要更改由其返回的數(shù)據(jù),則您仍需要更新程序集中的代碼以添加參數(shù)、更新 GetValue() 調(diào)用,等等,這時(shí)候估計(jì)比較繁瑣了。

   2.可移植性差
由于存儲(chǔ)過(guò)程將應(yīng)用程序綁定到 SQL Server,因此使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯將限制應(yīng)用程序的可移植性。

基本用法:

//創(chuàng)建存儲(chǔ)過(guò)程
use WEHealth
go
create procedure pro_test
@_code varchar(50)
as
IF ( @_code IS NOT NULL )
    select *
    from Hospital
    where Code like "%"+@_code+"%";
    
ELSE
    select *
    from Hospital;
//調(diào)用存儲(chǔ)過(guò)程
exec pro_test "101999";
exec pro_test null;
函數(shù) 表值函數(shù) 標(biāo)量值函數(shù)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/17916.html

相關(guān)文章

  • 云服務(wù)器 ECS 建站教程:在ECS上部署數(shù)據(jù)庫(kù)

    摘要:在阿里云平臺(tái)上,可通過(guò)自帶的鏡像市場(chǎng)實(shí)現(xiàn)一鍵部署系統(tǒng)的數(shù)據(jù)庫(kù),完美解決耗時(shí)長(zhǎng)部署易出錯(cuò)的缺陷。操作步驟登錄云服務(wù)器管理控制臺(tái)。單擊左側(cè)導(dǎo)航中的云服務(wù)器創(chuàng)建實(shí)例。在ECS上部署數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)是依照某種數(shù)據(jù)模型組織起來(lái)并存放二級(jí)存儲(chǔ)器中的數(shù)據(jù)集合。這種數(shù)據(jù)集合具有如下特點(diǎn):盡可能不重復(fù),以最優(yōu)方式為某個(gè)特定組織的多種應(yīng)用服務(wù),其數(shù)據(jù)結(jié)構(gòu)獨(dú)立于使用它的應(yīng)用程序,對(duì)數(shù)據(jù)的增、刪、改和檢索由統(tǒng)一軟件進(jìn)...

    stefan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<