日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sql 截取_如何用 SQL 找一个女朋友?

發布時間:2025/3/19 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql 截取_如何用 SQL 找一个女朋友? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

作為一個sql boy,筆者認為寫sql真的是很枯燥而且很簡單的事情,但沒想到身邊的朋友竟然會寫不出sql來,因此筆者突發靈感編寫此文來梳理一下如何寫sql,以及怎么樣寫好sql。

那么開頭就以筆者今天做的一個需求為例吧,上班第一天,業務方提出了一個取數需求,要求獲取指定條件的用戶,且用戶姓名要進行掩碼處理。例如:

姓名為:“李四”,那么要輸出"李*";

姓名為:“古力古麗”,那么要輸出“古***”;

即只需要保留第一個字符,剩下的字符要用*替代。

剛一開始覺得這個蠻簡單的,不就是一個sql的事情嗎,正好玩了好幾天可以緩解一下假期綜合癥。說來就開始搞呀。

梳理

看到這個需求的時候,我大概知道要實現這么一個功能,需要替換(regexp_replace)、截取(substr)函數,那么接著梳理一下:

  • 先要獲取第一個字符,即需要截取

  • 然后要獲取剩余字符并替換為*

  • 看,不就是那么簡單嘛,那么接下來隨便整點測試數據驗證一下思路是否正確。

    1--?1.首先獲取第一個字符
    2select?substr('你好',0,1)
    3
    4--?2.獲取剩余字符長度,并替換*,這里需要先獲取剩余字符
    5select?substr('你好',2)?--思考?這里為什么要從下標2開始呢?而不是從1開始?
    6
    7-- 3.這里要進行替換(那就要使用regexp_replace函數實現了),注意:這里有個坑
    8select?regexp_replace(substr('你好',2),'(.*)','*')??

    what?為什么會有兩個字符呢?完蛋,看樣子是中文字符占用字節數的問題,那么就不能用正則替換這條路了,那接下來怎么搞?

    曲線救國

    剛才看到使用正則替換不能實現該需求,那怎么辦?唉,先喝口茶吧,突然想到了python有一個可以生成重復字符的功能,即print("*"*5)。那sql是不是也可以實現呢?管他呢,先試試。

  • 第一步仍然是要先獲取第一個字符

  • 那么接下來就要獲取剩余字符的長度,這樣不就可以通過重復生成指定長度的字符完成了嘛

  • 那么問題又來了,hql有可以生成重復的函數嗎?先搜搜看

    果然眼神好的我,發現了repeat這個函數,那么我們就來試試吧

    1--?1.首先獲取第一個字符
    2select?substr('你好',0,1)
    3
    4--?2.先測試下repeat這個函數好不好使
    5select?length(substr('你好',2))?--果然好使
    6
    7-- 3.那么接下來拼接一下吧,其實后來發現不需要獲取剩余字符的長度,我只需要獲取完全字符長度再-1即可。因為需求只需要保留一個字符
    8select?repeat('*',length('你好')-1)

    趕緊結束這個需求吧

    既然整個步驟拆解都已經測試ok了,那么我們把sql拼接一下吧

  • 首先獲取第一個字符

  • 將剩余字符生成對應長度的替代字符

  • 將1和2步進行拼接

  • 1select?concat(substr('你好',0,1),repeat('*',length('你好')-1))
    2select?concat(substr('古力古麗',0,1),repeat('*',length('古力古麗')-1))

    最后說兩句

    筆者這里給出的需求雖然很簡單,而且不復雜,如果讀者有更好的思路可以一起討論下,但對于所有的sql需求來說,其實整體步驟都是一樣的。即

  • 首先要分析需求,先要有一個解決思路,可以不先寫sql,

  • 然后根據自己的思路去進行拆解,然后每一步都用sql來實現

  • 把所有拆解的步驟拼裝在一起

  • 最后是對這個sql的優化了

  • 筆者這里說起來比較簡單,但對于沒有寫過sql的同學來說還是比較難的,正如我們刷算法題,對于大部分程序員來說是一件比較痛苦的事情,一開始真的很難,其實難的是沒有思路,不知道如何下手。但熟練了之后,相信又是另一種心態了。

    往期推薦

    2020年大廠面試題-高級Java開發篇

    數據開發必經之路-數據傾斜

    2020年大廠面試題-數據倉庫篇

    元數據管理-技術元數據解決方案

    一萬字完整總結Flume

    Hive調優,數據工程師成神之路

    SparkStreaming完整學習教程

    數倉利器-Hive高頻函數合集

    數據同步神器-Datax源碼重構

    2020年大廠面試題-數據倉庫篇

    0003-01-Hive常見問題匯總

    zookeeper源碼解讀之-DataTree模型構建+Leader選舉

    zookeeper源碼解讀之-服務端啟動流程

    zookeeper源碼解讀之-源碼編譯

    總結

    以上是生活随笔為你收集整理的sql 截取_如何用 SQL 找一个女朋友?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。