<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          詳解用 SQL 提取字符串中的字母

          共 1332字,需瀏覽 3分鐘

           ·

          2022-03-10 16:49

          點擊關注上方“SQL數(shù)據(jù)庫開發(fā)”,

          設為“置頂或星標”,第一時間送達干貨


          問題描述
          我們在進行數(shù)據(jù)處理時,可能經(jīng)常需要對不同類型的字符進行抽取。比如一些產(chǎn)品型號,批次之類的會使用字母表示,這個時候該如何提取這些數(shù)據(jù)呢?

          問題分析
          不管是字母,還是數(shù)字,我們都可以使用相應的匹配規(guī)則來抽取出來。但是由于字母是混合在字符串中,我們需要循環(huán)對其進行匹配。

          具體解法
          我們創(chuàng)建一個函數(shù),通過調(diào)用這個函數(shù)來找出所有的字母。
          CREATE FUNCTION dbo.GET_LETTER (@Str VARCHAR(100))
          RETURNS VARCHAR(100)
          AS
          BEGIN
          WHILE PATINDEX('%[^a-z]%', @Str) > 0
          BEGIN
          SET @Str = STUFF(@Str, PATINDEX('%[^a-z]%', @Str), 1, '');
          END;
          RETURN @Str;
          END;
          GO


          代碼解讀
          上面的解法主要使用了兩個函數(shù),PATINDEX函數(shù)和STUFF函數(shù)
          PATINDEX函數(shù)

          PATINDEX ( '%pattern%' , expression )

          返回pattern字符串在表達式expression里第一次出現(xiàn)的位置,起始值從1開始算。
          例如?
          SELECT PATINDEX('%SQL%','SQL數(shù)據(jù)庫開發(fā)')
          結果:
          因為SQL就在第一位,所以返回結果為1

          STUFF函數(shù)
          STUFF ( expression1 , start , length ,expression2 )
          字符串expression1 從start位置開始,刪除長度為length的字符后,在start后面填充expression2。
          例如
          SELECT STUFF('SQL,開發(fā)',4,1,'數(shù)據(jù)庫')
          ?結果:
          上面的示例是將","刪除后,替換成了"數(shù)據(jù)庫"

          測試函數(shù)
          理解完上面的函數(shù),我們來測試一下我們自定義的函數(shù)GET_LETTER ()
          SELECT dbo.GET_LETTER('SQL數(shù)1據(jù)2庫3開4發(fā)road')
          結果:

          這與我們預期的結果一致,證明這個自定義函數(shù)是可行的。

          覺得不錯,歡迎轉(zhuǎn)發(fā)分享給更多人,讓有需要的人也看到。


          我是岳哥,最后給大家分享我寫的SQL兩件套:《SQL基礎知識第二版》《SQL高級知識第二版》的PDF電子版。里面有各個語法的解釋、大量的實例講解和批注等等,非常通俗易懂,方便大家跟著一起來實操。


          有需要的讀者可以下載學習,在下面的公眾號「數(shù)據(jù)前線」(非本號)后臺回復關鍵字:SQL,就行

          數(shù)據(jù)前線

          后臺回復關鍵字:1024,獲取一份精心整理的技術干貨

          后臺回復關鍵字:進群,帶你進入高手如云的交流群。


          推薦閱讀

          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本爱爱视频网站 | 国产精品乱伦 | 青娱乐自拍网站 | 艹逼图 | 国产97视频 |