首页
/
每日頭條
/
圖文
/
王富貴的真實姓名
王富貴的真實姓名
更新时间:2026-05-02 04:42:55

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

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

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

方案:

首先給出數據建表腳本(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
推荐阅读
喬司拆遷什麼時候結束
喬司拆遷什麼時候結束
喬司拆遷什麼時候結束?11月20日,喬司全域整治和生态修複項目啟動這也是由自然資源部牽頭,入圍浙江省的試點名單的重大項目涉及22萬喬司常住人口的大事件,下面我們就來說一說關于喬司拆遷什麼時候結束?我們一起去了解并探讨一下這個問題吧!喬司拆遷...
2026-05-02
王一博在湖南衛視跨年表演
王一博在湖南衛視跨年表演
湖南衛視跨年演唱會的節目單公開,王一博将會有一首和哥哥們的合唱《快樂出發》在前面,也有自己的獨唱《無感》在比較後面,這也讓粉絲們确定了《無感》的出場方式就是騎摩托車亮相。一般節目單都是給粉絲看自己選擇時間觀看,但因為一博是主持人幾乎全場都在...
2026-05-02
耳機有哪幾種種類
耳機有哪幾種種類
多數人對HiFi的追求程度雖談不上“發燒",但同樣希望能夠聽到真正不錯的音質。所以在購買耳機之前,不願甘心再當小白或者說對耳機一無所知,需要适當的了解一些基礎知識,然後再去選擇合适自己的耳機設備。下面,雷萌科技小編就帶大家由淺及深先...
2026-05-02
綠瑪瑙的五行屬性是什麼
綠瑪瑙的五行屬性是什麼
承載信義的黃色瑪瑙珠寶黃色在五行中對應的方位是中、屬土,以溫厚笃實的能量寓意守固,是代表誠信的顔色。《周易》裡面的坤卦對應的就是土,故土載四方,為萬物之母,具有奉獻精神,在一切皆以信字當頭的農耕時代,土就是根基與穩固的象征。今天我們就來分享...
2026-05-02
韓國女團大方承認整容
韓國女團大方承認整容
原創聲明:本翻譯由滬江韓語原創未經授權禁止轉載來自EXID組合的Hani深受粉絲的喜愛,除了外表美麗,心地也十分善良。讓我們一起來看看在Hani身上發生的小故事吧。因為不能把粉絲送的禮物帶出國,所以找到粉絲非常貼心地說明지난8일일본투어를위...
2026-05-02
Copyright 2023-2026 - www.tftnews.com All Rights Reserved