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

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

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

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

方案:

首先給出數據建表腳本(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
推荐阅读
桌面壁紙超清全面屏養眼
桌面壁紙超清全面屏養眼
「今日美屏」一個人,享受不一樣的樂趣,HD超清壁紙「新鮮熱辣」聯想LenovoK6HD超清壁紙「Today'smostbeauty52」HD超清壁紙,
2025-11-03
西甯傳祺gs5報價
西甯傳祺gs5報價
【傳祺合威店GS5現金優惠直降9千,超級0首付3年0利率】超級0首付好車開回家,活動專屬6重大禮1.試駕禮:當天到店簽到試駕即送車載小禮品一份;2.金融禮:勁享0首付,超低首付,3年0利息;3.置換禮:二手車置換尊享最高5000元補貼;4....
2025-11-03
何穗皮膚白到讓人羨慕誰
何穗皮膚白到讓人羨慕誰
說到國内最有名的超模,你會想到誰?奚夢瑤?劉雯?何穗?除了奚夢瑤嫁入豪門,其她兩位的感情有點撲朔迷離,何穗之前被拍到過和陳偉霆的戀情,但至今沒有官宣。最近,網上傳出了劉雯和井柏然的戀情,兩人被拍入住同一家酒店,還拍到了兩人一起騎單車的照片,...
2025-11-03
正能量周一愉快句子
正能量周一愉快句子
周一愉快,珍重友情,感恩相遇!世界很大,能走在一起是緣分。人海很深,能并肩前行是福氣。2022年最給力的一句話:風雨同舟,彼此安康!早上好!好朋友,永遠陪伴左右;真情誼,永遠風雨同行。友誼,需要把握,更要懂得珍惜。懂得珍惜,才會長久;知道感...
2025-11-03
測血壓是測左手還是右手準
測血壓是測左手還是右手準
“醫生,測血壓時,測左臂還是右臂啊,我這血壓每次都不一樣,我實在是看不懂。”王叔在上個月的體檢中被查出血壓偏高,醫生讓他在家裡要注意調理,自行監測血壓。王叔很聽醫生的話,每天在家裡都會自行測量血壓,但是每次測出來的值都不一樣,更離奇的是兩隻...
2025-11-03
Copyright 2023-2025 - www.tftnews.com All Rights Reserved