首页
/
每日頭條
/
圖文
/
王富貴的真實姓名
王富貴的真實姓名
更新时间:2024-09-28 20:15:18

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

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

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

方案:

首先給出數據建表腳本(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
推荐阅读
水性楊花形容詞
水性楊花形容詞
水性楊花,漢語成語,讀音為shuǐxìngyánghuā,意思是像流水那樣易變,像楊花那樣輕飄。比喻婦女在感情上不專一。出自清代高鹗、程偉元續寫《紅樓夢》。水性楊花學名波葉海菜花,波葉海菜花(學名:Otteliaacuminatavar.c...
2024-09-28
黃褐斑趣味科普
黃褐斑趣味科普
大家好,又到了我和大家分享祛斑知識的時候了。也感謝各位朋友一如既往的支持魯超,如果你有什麼日常護膚中遇到的問題都可以随時給我留言或者加我微信7*24小時在線。希望今天的分享能幫到你,最近确實太多的朋友加我,問我是不是黃褐斑,其實我一看就覺得...
2024-09-28
一個保镖保護一個夫人的韓劇
一個保镖保護一個夫人的韓劇
一個保镖保護一個夫人的韓劇?#韓劇泰劇迷#韓劇很多都是以小見大的,當然也不失浪漫情調,今天小編就來聊一聊關于一個保镖保護一個夫人的韓劇?接下來我們就一起去研究一下吧!一個保镖保護一個夫人的韓劇#韓劇泰劇迷#韓劇很多都是以小見大的,當然也不失...
2024-09-28
蔡司防藍光眼鏡有用嗎
蔡司防藍光眼鏡有用嗎
好像不知道從什麼時候開始,大家的日常娛樂變得很局限。不管是下班後還是周末休息......宅家放松的方式就是拿起手機,玩玩遊戲、看看電影追追劇、刷刷短視頻......雖然感覺很放松但是又感覺缺少了點什麼。氛圍,對!就是氛圍!手機再怎麼強大,但...
2024-09-28
董潔素顔現身機場穿的咖色上衣
董潔素顔現身機場穿的咖色上衣
說實話,女明星之所以是明星,就是因為她們的長相和氣質和普通人有區别,大多數女明星的氣場都很強,這一次董潔走在機場上也展現出了個人的魅力,穿上一件時髦的黑色風衣走在機場上,雖然是素顔,但是狀态卻很好,展現出了走路帶風的感覺,難以掩蓋女神範。休...
2024-09-28
Copyright 2023-2024 - www.tftnews.com All Rights Reserved