首页
/
每日頭條
/
圖文
/
王富貴的真實姓名
王富貴的真實姓名
更新时间:2025-12-08 09:06:53

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

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

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

方案:

首先給出數據建表腳本(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
推荐阅读
地下城堡2 雲之國攻略(地下城堡2史上最豪華福利活動)
地下城堡2 雲之國攻略(地下城堡2史上最豪華福利活動)
  經典的地牢探險與模拟經營手遊《地下城堡2》将于1月17日推出年度重制版。從遊戲畫面到人物角色都将全面換新,并且會有新的玩法内容更新。      圖1:年度重制版1月17日上線   随着本次更新,遊戲内也将開展各式各樣的福利活動,這在之前的版本中都是沒有的。單看禮包就囊括了登陸、充值等多種類型的禮包,讓人目不暇接。   回家的誘惑一:全服送SS英雄   本...
2025-12-08
從此江湖再無的詩句(天下獨步的步非非妙境的非)
從此江湖再無的詩句(天下獨步的步非非妙境的非)
     ​   步,非,煙! 天下獨步的步,非非妙境的非,煙華鼎盛的煙。步非煙這樣解釋自己的名字。   有人說步非煙是武俠作家的“超女”,甚至她的讀者自稱“煙絲”。她的走紅是比較快,因為确實是兼具了實力與偶像元素的武俠寫手。實力,因為她是才女;偶像,因為她是美女。      ​   ​   她的作品文字妖娆豔麗,想象精彩奇特,意境恢宏壯闊。使其成名的《武林...
2025-12-08
周筆暢奔跑吧兄弟在第幾期(從極限男人幫到鄧超鹿晗)
周筆暢奔跑吧兄弟在第幾期(從極限男人幫到鄧超鹿晗)
  就算是在普通人的世界裡,真正的友情都非常難得,更何況是娛樂圈呢?   一腳踏入這個圈子的時候,就已經牽扯到各種各樣的利益關系了。   更何況如今娛樂圈裡也面臨着資源不夠分的情況,這也就意味着有些明星之間也是免不了要進行一番資源争奪。      所謂“既生瑜何生亮”,有争奪就會結下梁子,哪怕是之前關系再好的朋友,日後也極有可能會撕破臉皮。   話雖如此,難...
2025-12-08
三千青絲詩句唯美精選50條(浸潤在詩詞中的美妙年華)
三千青絲詩句唯美精選50條(浸潤在詩詞中的美妙年華)
  自古美人歎遲暮,不許英雄見白頭。遲暮真的是一件隻能悲傷無奈的事情嗎?   每個年齡都有每個年齡獨有的美,青絲有鮮活的朝氣美,華發有溫潤的歲月美,它們本就不分伯仲,一樣動人!      衰老是終究不可避免的事,然而現在我們在很多短視頻平台都能看到,一些妝容精緻、服飾考究的阿姨,展現出了這個年齡段獨有的氣質美。   那是閱盡千帆後,被生活打磨出的獨特韻味,雖...
2025-12-08
紐西之謎面膜真的好用嗎(紐西之謎紐西之謎面膜)
紐西之謎面膜真的好用嗎(紐西之謎紐西之謎面膜)
  中國質量新聞網訊 (楊振遠)砸廣告、刷直播、上綜藝,紐西之謎可謂是近兩年風頭正勁的美妝品牌。然而,中國質量新聞網接消費者投訴稱,使用該品牌“爆款”産品“紐西之謎溫泉水乍彈面膜”後,“感覺油油的,很奇怪”,她通過查詢相關資料,認為紐西之謎所宣傳的“礦物質”護膚理念并沒有權威的科學數據支持,因此對其功效和安全性提出了質疑。   接訴後,中國質量新聞網委托專業...
2025-12-08
Copyright 2023-2025 - www.tftnews.com All Rights Reserved