国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

SQL server的一道入門面試題背后的思考

數(shù)據(jù)庫 SQL Server
SQL編程,或C#、Java,甚至Javascrip的某個領(lǐng)域也是如此。技術(shù)是死的,思路是鮮活的,有時候,思路能輕易地突破技術(shù)很難實現(xiàn)的死角。

最近看到一個SQL Server的小例子,發(fā)現(xiàn)完全可以作為SQL server的一道入門面試題。題目如下:

例:有一合同表Contract

Id Name Total

buget

1 合同名稱 100  102,22
2 合同名稱2 300 ,102,22,
3 合同名稱3 200  103,23,

要求:用SQL語句更新表的buget字段,如果前后沒有","要加上","(即一個英文逗號)。(10分)

創(chuàng)建表數(shù)據(jù):

View Code

  1. use Testdb2    
  2. go    
  3. IF NOT OBJECT_ID('[Contract]'IS NULL        
  4. DROP TABLE [Contract]    
  5. GO     
  6. Create table [Contract]     
  7. (ID int primary key identity(1,1)   
  8. ,[Name] nvarchar(50) null   
  9. ,Total float null   
  10. ,buget Nvarchar(500) null )     
  11. go     
  12. insert into [Contract]    
  13. select '合同名稱',  100,'102,22'    
  14. union all    
  15. select '合同名稱2', 300,',102,22,'    
  16. union all    
  17. select '合同名稱3', 300,'101,23,'   
 分析:這道題乍看很簡單,由于肯定用到Replace,所以很自然的結(jié)合left,right,從而得到以下語句

方法一

  1. update [Contract] set buget=','+buget where left(buget,1)=',' 
  2. update [Contract] set buget=buget+',' where right(buget,1)=','  
如果能寫成一個 SQL語句,可以加1分。
  1. update [Contract]   
  2. set buget=(case when (left(buget,1)!=',' and right   (buget,1)!=','then  ','+buget+','              
  3. when left(buget,1)!=',' then ','+buget              
  4. when right(buget,1)!=',' then  buget+','              
  5. else buget        
  6. end)  
如果能從字符串的開關(guān)和結(jié)尾這個思路出發(fā),結(jié)合Reverse,可以提到如下方法:

方法二:

  1. update [Contract] set buget=','+buget where charindex(',',buget)<>1  
  2. update [Contract] set buget=buget+',' where charindex(',',reverse(buget))<>1  
該方法,主要涉及charindex函數(shù)和reverse函數(shù)。

說實話,我當(dāng)時就這兩種思路,這也是SQL中常見的基本用法。但出人意料的第三種方法出現(xiàn)了。

方法三:

  1. UPDATE [contract] SET Buget = ','+Buget+',' 
  2. UPDATE [contract] SET Buget = REPLACE(Buget,',,',',')  
解析:該方法最主要的亮點不在于語法的精妙,而在于其思路的異于常規(guī)。先給兩邊補上逗號,再替換雙逗號為單逗號。這在實際編程中確實難能可貴。換句話說,如果沒有事先思考過的話,這反映了解題者反應(yīng)敏捷,思路開放。因此,至少可以再加3分。

當(dāng)然,此語句其實還是有bug,比如如果原bug字段中間有兩個逗號,那么在Replace時就會更新掉不應(yīng)該更新的內(nèi)容。不過,稍加修正,限定replace的范圍即可,

受此思路啟發(fā),可以引申得到以下類似方法:

方法四:

  1. UPDATE [contract] SET Buget = substring(BuGet,2,len(BuGet)-1) wherecharindex(',',buget)=1  
  2. UPDATE [contract] SET Buget = substring(BuGet,1,len(BuGet)-1) wherecharindex(',',reverse(buget))=1  
  3. UPDATE [contract] SET BuGet = ','+BuGet+','  
該方法是先去掉兩邊的逗號,再給每條記錄加上逗號,比起方法三來,稍顯繁瑣,這也反襯了方法三的巧妙。

當(dāng)然,也可以結(jié)合前面的思路稍作修正,這里就不再贅述,請讀者自己思考。

感悟:釋迦牟尼說過“人生需要經(jīng)過六項修煉:布施、持戒、忍辱、精進、禪定、智慧。”,SQL編程,或C#、Java,甚至Javascrip的某個領(lǐng)域也是如此。技術(shù)是死的,思路是鮮活的,有時候,思路能輕易地突破技術(shù)很難實現(xiàn)的死角到了一定程度時,會發(fā)現(xiàn)潛意識里已經(jīng)被慣性思維塞滿,而無法接受新鮮思維方式或思路,如果一段時間內(nèi)持續(xù)如此,那么,我們應(yīng)該警醒,把自己的頭腦放空,把自己置于一個初學(xué)者的地位,重新開始“精進”的修煉!

原文鏈接:http://www.cnblogs.com/downmoon/archive/2011/03/02/1968615.html

【編輯推薦】

  1. 如何讓微軟認(rèn)識閏年的2月29日
  2. SQL Server存儲過程的命名標(biāo)準(zhǔn)如何進行?
  3. 卸載SQL Server 2005組件的正確順序
  4. 對SQL Server字符串?dāng)?shù)據(jù)類型的具體描述
  5. SQL Server數(shù)據(jù)類型的種類與應(yīng)用

 

責(zé)任編輯:艾婧 來源: 博客園
相關(guān)推薦

2024-10-11 17:09:27

2017-03-10 09:33:16

JavaScript類型

2018-03-06 15:30:47

Java面試題

2011-05-23 11:27:32

面試題面試java

2023-02-04 18:24:10

SeataJava業(yè)務(wù)

2009-08-11 10:12:07

C#算法

2022-04-08 07:52:17

CSS面試題HTML

2009-08-11 15:09:44

一道面試題C#算法

2017-11-21 12:15:27

數(shù)據(jù)庫面試題SQL

2021-05-31 07:55:44

smartRepeatJavaScript函數(shù)

2009-08-11 14:59:57

一道面試題C#算法

2021-10-28 11:40:58

回文鏈表面試題數(shù)據(jù)結(jié)構(gòu)

2021-03-16 05:44:26

JVM面試題運行時數(shù)據(jù)

2015-09-02 14:09:19

面試題程序設(shè)計

2023-08-01 08:10:46

內(nèi)存緩存

2011-06-14 09:12:03

JavaScript

2017-09-13 07:15:10

Python讀寫文件函數(shù)

2021-03-27 10:59:45

JavaScript開發(fā)代碼

2022-02-08 18:09:20

JS引擎解析器

2018-04-26 11:23:01

Linuxfork程序
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品xnxxcom| 亚洲欧洲在线视频| 91传媒免费看| 亚洲成人激情社区| 精品日本美女福利在线观看| 亚洲在线观看一区| 亚洲成人最新网站| 久久91亚洲精品中文字幕| 成人影院在线看| 亚洲线精品一区二区三区八戒| 成人av在线不卡| 99在线精品免费视频九九视| 97在线精品国自产拍中文| 欧美黑人粗大| 欧美性大战久久久久久久| 天堂在线资源视频| 99国产精品久久久久久久成人热| 久久久久久美女| 日韩男人天堂| 性欧美xxxx大乳国产app| 日本午夜人人精品| 丁香婷婷久久| 欧美精品一区二区三区很污很色的 | 91麻豆蜜桃一区二区三区| 久久精品丝袜高跟鞋| 国产精品久久久久久久久妇女| 欧美成人精品在线视频| 亚洲精品一区| 日韩av在线电影网| 色呦呦在线看| 精品污污网站免费看| 中文字幕不卡免费视频| 国产精品国产精品国产专区不蜜 | 一本到12不卡视频在线dvd| 色综合视频网站| 蜜桃成人精品| 亚洲女同性videos| 两个人看的在线视频www| 精品国产乱码久久久久久蜜臀| 欧美精品日韩少妇| 制服视频三区第一页精品| 国产激情视频在线观看| 69久久99精品久久久久婷婷| 成人欧美在线| 日韩经典中文字幕| 成人软件在线观看| 色阁综合伊人av| 日韩一级片免费视频| 中国国产一级毛片| 亚洲成人自拍一区| 免费黄网站在线观看| 在线电影一区二区三区| 在线观看污网站| 国产成人无码一二三区视频| 青青伊人久久| 精品中文字幕在线| 成人中文字幕视频| 日本亚洲欧美三级| 91精品电影| 国产一区二区三区四区hd| 日韩不卡一二三区| www.国产二区| 中文成人av在线| 国产激情视频网址| 色8久久人人97超碰香蕉987| a视频在线播放| 一区二区三区www| 色先锋久久影院av| 俄罗斯精品一区二区| 亚洲永久在线| 精品视频在线观看一区二区| 国产三级三级三级精品8ⅰ区| 精品久久综合| 999视频在线观看| 欧美三级视频| 91国产在线播放| 51精产品一区一区三区| 日韩av三级在线观看| 麻豆福利在线观看| 日本丶国产丶欧美色综合| jizz在线观看| 免费成人在线影院| siro系绝美精品系列| 一区二区三区国产在线| 黄黄视频在线观看| 国产精品久久久久久久久动漫| 亚欧精品一区| 日韩美女视频在线| 国产劲爆久久| 国产美女精品久久久| 亚洲aaaaaa| 日韩免费小视频| 国产精品电影在线观看| 国产精品毛片| 一级特黄性色生活片| 欧美在线免费观看亚洲| 成人深夜福利| 91超碰rencao97精品| 国产**成人网毛片九色 | 亚洲国产精品va| 成人免费在线电影网| 国产伦精品一区二区三区高清版 | 青青草国产精品视频| 久久久久久免费网| 国际av在线| 久久影视电视剧免费网站清宫辞电视| 日韩一区二区中文| 国产一二三在线视频| 亚洲国产精品久久一线不卡| 国产三级电影在线播放| 国产专区精品视频| 久久久久青草大香线综合精品| 毛片在线播放a| 国产精品678| xnxx国产精品| 91精品国产黑色瑜伽裤| 91国产在线播放| 中文字幕在线一区免费| 92国产精品| 久久久久九九九| 亚洲福利一区二区三区| 久久国产精品美女| 色撸撸在线观看| 在线不卡的av| 欧美第一精品| 黄页免费观看| 久久这里有精品| 精品一区二区三区免费播放| 国产天堂在线| 国产免费一区二区三区在线能观看| 国产精品99久久久久久久女警 | 欧美国产日韩在线| 日韩成人免费在线| 国模吧精品人体gogo| 国产成人久久久精品一区| 成人永久aaa| 成年人黄色大片在线| 精品国产一区二区三区麻豆小说 | 中文字幕在线日韩| 青青青伊人色综合久久| 岛国在线大片| 国产美女扒开尿口久久久| 国产精品久久久久久久久久免费看| 欧美日韩视频网站| 欧美变态口味重另类| 视频一区不卡| 在线播放/欧美激情| 午夜精品国产| 中文字幕在线免费观看| 国产精品9999| 综合婷婷亚洲小说| 日本亚洲不卡| 99视频入口| 青草成人免费视频| 国产精品视频一二| 成人免费在线电影网| 色戒在线免费观看| 欧美亚洲成人免费| 亚洲综合精品久久| 精品久久中文| 青青国产在线| 国产精品视频免费一区二区三区 | 日本天堂免费a| 亚洲欧美视频在线| 国产成人综合网站| 日韩毛片免费看| 日本久久精品一区二区| 午夜精品久久久99热福利| 欧美激情一区在线| 青青草成人在线| 中文在线日韩| 最色在线观看| 97人人香蕉| 欧美日韩一区精品| 亚洲国产欧美国产综合一区| 最新av在线播放| 欧美少妇在线观看| 欧美国产在线电影| 一区二区三区加勒比av| 欧美一区国产在线| 高h视频在线播放| 91九色丨porny丨国产jk| 97精品国产97久久久久久免费 | 久久精品官网| 成年人在线网站| 国产二区视频在线播放| 欧洲美女7788成人免费视频| 在线成年人视频| 制服丝袜亚洲色图| 国产精品自拍一区| 日韩成人18| 亚洲成人观看| 在线观看日本一区| 精品中文字幕视频| 色88888久久久久久影院野外| 美国毛片一区二区三区| xvideos.蜜桃一区二区| 最新国产在线观看| 欧美丰满熟妇bbbbbb百度| 国产免费一区视频观看免费 |