首页
/
每日頭條
/
圖文
/
王富貴的真實姓名
王富貴的真實姓名
更新时间:2025-11-24 06:18:36

背景:你們公司超級注重企業文化,要求大家要做好孩子多讀書,公司老闆叫王富貴,老闆娘叫張翠花,另有員工若幹人。

需求:領導要求搞一個員工讀書記錄排名,展示出每個員工所讀過的書都有啥?

分析:從這樣及其常見的一句話需求描述中,聰明的小趴菜你肯定知道,老闆肯定要排在最前面,然後應該是老闆娘,剩餘的普通員工按照姓名首字母排等等這些隐藏的需求。

方案:

首先給出數據建表腳本(Oracle)

CREATE TABLE T_BOOK_RECORD ( ID VARCHAR2(100) NOT NULL, USER_NAME VARCHAR2(100) NOT NULL, BOOK_NAME VARCHAR2(100) NOT NULL, CONSTRAINT T_BOOK_RECORD_PK PRIMARY KEY (ID) ); COMMENT ON TABLE T_BOOK_RECORD IS '閱讀記錄'; COMMENT ON COLUMN T_BOOK_RECORD.ID IS '主鍵'; COMMENT ON COLUMN T_BOOK_RECORD.USER_NAME IS '人員姓名'; COMMENT ON COLUMN T_BOOK_RECORD.BOOK_NAME IS '書籍名稱';

然後給出靈魂數據腳本

INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('1', '王富貴', '《如何合法罰款》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('2', '李加成', '《舔狗的自我修養》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('3', '孫正易', '《囚徒健身插圖版》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('4', '王絲匆', '《窮爸爸富爸爸》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('5', '趙僞', '《資本遊戲》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('6', '王富貴', '《人家大愛-996福報》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('7', '張翠花', '《拴住老公的胃》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('8', '張翠花', '《老闆娘不是老闆的娘》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('9', '李加成', '《老子明天不上班》'); INSERT INTO T_BOOK_RECORD (ID, USER_NAME, BOOK_NAME) VALUES('10', '王絲匆', '《投胎那些事》');

你最開始可能想到的方法
  • 首先,按照姓名排序查出所有數據

SELECT USER_NAME ,BOOK_NAME FROM T_BOOK_RECORD ORDER BY NLSSORT(USER_NAME,'NLS_SORT = SCHINESE_PINYIN_M')

得到結果如下:

王富貴的真實姓名(王富貴企業文化之姓名排序)1

  • 然後,通過代碼篩選出老闆王富貴和老闆娘張翠花的數據依次塞到一個集合裡

public List<BookRecord> list(){ List<BookRecord> boss = new ArrayList<>(); List<BookRecord> bossWife = new ArrayList<>(); List<BookRecord> nobody = new ArrayList<>(); for(BookRecord br : list){ if ("王富貴".equals(br.getUserName())){ boss.add(br); }else if ("張翠花".equals(br.getUserName())){ bossWife.add(br); }else { nobody.add(br); } } boss.addAll(bossWife); boss.addAll(nobody); return boss; }

其實也可以一個并不複雜的SQL直接實現

SELECT * FROM T_BOOK_RECORD ORDER BY decode(USER_NAME,'王富貴',1,'張翠花',2) ,NLSSORT(USER_NAME,'NLS_SORT = SCHINESE_PINYIN_M')

得到結果如下:

王富貴的真實姓名(王富貴企業文化之姓名排序)2

這裡主要有以下幾個知識點:

  • 字段按照拼音字母排序

SELECT * FROM T_BOOK_RECORD ORDER BY NLSSORT(USER_NAME,'NLS_SORT = SCHINESE_PINYIN_M')

  • 動态處理函數decode(),這個有點類似三目運算表達式

DECODE(USER_NAME,'王富貴',1,'張翠花',2),這個代表,如果USER_NAME='王富貴',函數返回1,如果USER_NAME='張翠花',函數返回2,這個函數的返回值是優先級最高的排序條件

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
最年輕起兵稱帝的是誰(4位對手中有個曾4度稱帝)
最年輕起兵稱帝的是誰(4位對手中有個曾4度稱帝)
  第36屆香港電影金像獎頒獎典禮将于2017年4月9日晚舉行,此前,香港金像獎對外公布了提名名單,對于今年的提名,阿歪是沒感到多少意外的,畢竟現在稱得上是香港電影的影片也沒多少,在這裡面能當參賽的作品也就更少了,所以阿歪在看電影的時候基本上就能猜到這部片能不能被提名最佳影片,這個主角能不能被提名最佳男主。不過,意料之外的事還是有的,《七月與安生》這部影片雖...
2025-11-24
擦洗油垢最好清潔劑(日本百年油污清潔劑)
擦洗油垢最好清潔劑(日本百年油污清潔劑)
     掐指一算,年底了,又到了一年一度大掃除的時候。      如果要問什麼地方是打掃難點? 那就非廚房莫屬。   竈台上燒焦幹涸的污漬,鍋底下厚重發黴的油漬,以及水槽裡長滿毛毛的水垢......每次清潔起來都讓人抓狂。      買了一大堆清潔劑,瓶瓶罐罐占地方不說,清潔效果還不盡如人意。      直到小編發現了它-CLEALION重油清潔劑。   ...
2025-11-24
楊潔為何後悔拍西遊(三次邀請王伯昭)
楊潔為何後悔拍西遊(三次邀請王伯昭)
  在82版西遊記中,要說誰是最貴的演員,估計很多人會說是六小齡童,也有人可能會說是馬蘭,也就是飾演唐僧母親的演員,當年千裡送馬蘭的故事,還不時被人說起,在西遊記裡最貴的演員其實是飾演小白龍的演員王伯昭,總共出演了3集,片酬卻高達1500,當年劇組經費緊張,各種省吃儉用,按照楊潔導演的性格,肯定是不會花這麼多錢請王伯昭的,那到底是誰請的呢?      當年在...
2025-11-24
六級寫作高級替換詞彙(四六級寫作必背)
六級寫作高級替換詞彙(四六級寫作必背)
  各位備考四六級的童鞋們,2016年6月的四六級考試馬上就要到來了,你們的寫作都準備得如何呢?是否還是在練習寫作和翻譯時,一想寫“喜歡”就用“like”? 一想到“重要”就要寫“important”呢?快來看看小編為大家準備的以下寫作常用詞語高級替換吧!建議大家做好筆記,反複不斷地背誦,才能在考試中用起來哦!      重要的   (important) ...
2025-11-24
奔跑吧第一季陣容官宣(奔跑吧全新陣容合體亮相春推會)
奔跑吧第一季陣容官宣(奔跑吧全新陣容合體亮相春推會)
  3月28日,全新一季《奔跑吧》家族的七位成員李晨、Angelababy、鄭恺、朱亞文、王彥霖、黃旭熙、宋雨琦合體亮相浙江衛視春推會,兄弟團相聚一堂,其樂融融、笑聲不停。現場還有《王牌對王牌》家族沈騰、賈玲、華晨宇、關曉彤歡樂集結,更有《中國好聲音》全新導師王力宏驚喜出席,浙江衛視新年的亮相可謂是全員出動大陣仗了。      超長花絮引爆全場,李晨撕名牌以...
2025-11-24
Copyright 2023-2025 - www.tftnews.com All Rights Reserved