首页
/
每日頭條
/
圖文
/
王富貴的真實姓名
王富貴的真實姓名
更新时间:2025-11-17 03:15:29

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

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

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

方案:

首先給出數據建表腳本(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
推荐阅读
衛生間馬桶置物架加寬加大(毛巾架裝馬桶上面)
衛生間馬桶置物架加寬加大(毛巾架裝馬桶上面)
  大多數人裝修房子的時候隻注重客廳和卧室的位置,其實衛生間空間也應該重視起來。因為進出衛生間的頻率其實非常高,特别是家裡有老人和小孩的話,就更要仔細裝修。衛生間雖然不大,但裝修不當對生活也會有很大影響。      比如說,把毛巾架裝在馬桶上,很多家庭都是這樣做的,平時洗澡的時候,更方便放要換的衣服。這樣的擺放雖然方便了洗澡,但同時也存在一些問題,毛巾架直接...
2025-11-17
孔夫子舊書網印刷字畫拍品(新排版古玩人藝群星的)
孔夫子舊書網印刷字畫拍品(新排版古玩人藝群星的)
  6月7日起,由唐烨導演,王雷、荊浩、傅迦、雷佳、苗馳等青年演員主演,北京人藝2019年首部新排大戲《古玩》正式在首都劇場同觀衆見面。據悉,本劇将持續上演至6月23日。   這出四幕大戲以“至真堂”與“寶珍齋”的兩位掌櫃隆桂臣和金鶴鑫圍繞一對寶鼎三十餘年的恩怨糾葛為主線,對1902到1938年間清末民初北京古玩行的沉浮起落,着實做了一番群像式的描畫。   ...
2025-11-17
秦海璐說一部戲夠老百姓吃一輩子(秦海璐獲獎的這部片)
秦海璐說一部戲夠老百姓吃一輩子(秦海璐獲獎的這部片)
  本文作者:少年鞍馬   因為工作原因,經常在上海和老家兩地跑。不擅開車,就免不了背着鼓鼓的行囊混迹于客運站的洶湧人潮中。聽着大喇叭裡嘈雜的廣播,看着一張張相似又疲憊的面孔,總會忍不住想起一部講述上海務工者生活的電影:《到阜陽六百裡》。      離這部小成本電影上映已經快八年時間,但這部影片所展示的打工者們背井離鄉的孤單,對衣錦還鄉的渴望,以及對故土的眷...
2025-11-17
徐州正宗無錫面館(藏在徐州這個小區裡的面館)
徐州正宗無錫面館(藏在徐州這個小區裡的面館)
  很多人都喜歡原汁原味的街巷,喜歡老建築,我們還是抵不過那一個個的拆字,留不住那些正在消失的記憶……      富國街,位于徐州繁華的市中心,在百萬記事兒起,當年富國街的道路兩旁還有商販擺攤,晚上成了熱鬧的夜市兒...也是年代挺久的一條街道了。   富國街裡有個醒獅小區,是市中心的老小區了,這裡有着整個城市最繁茂的樹和最昏暗的路燈。      老小區吧,本...
2025-11-17
乘風破浪的姐姐們張萌現身機場(隻與張雨绮擊掌)
乘風破浪的姐姐們張萌現身機場(隻與張雨绮擊掌)
  今天要說的故事主人公是張萌。瓜姐第一次知道張萌是在《神話》這部電視劇裡,當時張萌的神仙顔值真的驚到了,瓜姐當時還真的覺得張萌跟胡歌很配呀。奈何兩人不是CP,但是當時張萌可是比女主還出彩哦。  之後張萌也陸陸續續參演了一些其他的電視劇。前段時間,張萌還因為懷孕拍戲流産上了熱搜,要知道,當時張萌都已經有37歲了,算得上是大齡産婦吧,瓜姐是真的很想知道,演戲有...
2025-11-17
Copyright 2023-2025 - www.tftnews.com All Rights Reserved