MySQL 字元串截取相關函數

来源:http://www.cnblogs.com/shinejaie/archive/2016/03/02/5235516.html
-Advertisement-
Play Games

MySQL 字元串截取相關函數 在工作中,可能需要將某些欄位按某個分割符組成一個字元串作為欄位值存取到資料庫表中,比如某個任務對應三個結果,分別存儲在不同的數據表中,這時可以將這三個不同表的主鍵按照約定的順序進行組合(主鍵a:主鍵b:主鍵c)。當需要分別去查任務對應類別的詳情信息時,可以截取特定位置


MySQL 字元串截取相關函數

在工作中,可能需要將某些欄位按某個分割符組成一個字元串作為欄位值存取到資料庫表中,比如某個任務對應三個結果,分別存儲在不同的數據表中,這時可以將這三個不同表的主鍵按照約定的順序進行組合(主鍵a:主鍵b:主鍵c)。當需要分別去查任務對應類別的詳情信息時,可以截取特定位置的字元串(主鍵b) join 表b進行操作。正好最近也遇到這塊操作,特意將 MySQL 字元串截取的相關函數做一個梳理,以便今後回顧。

一、left(str, len)

返回字元串 str 自左數的 len 個字元。如果任一參數為 NULL,則返回 NULL。

mysql> select left('shinejaie', 5);
+---------------------------------------------------------+
| left('shinejaie', 5)                                    |
+---------------------------------------------------------+
| shine                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

二、right(str, len)

返回 str 右邊末 len 位的字元。如果有的參數是 NULL 值,則返回 NULL。
mysql> select right('shinejaie', 4);
+---------------------------------------------------------+
| right('shinejaie', 4)                                   |
+---------------------------------------------------------+
| jaie                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

三、substring_index(str, delim, count)

返回 str 中第 count 次出現的分隔符 delim 之前的子字元串。如果 count 為正數,將最後一個分隔符左邊(因為是從左數分隔符)的所有內容作為子字元串返回;如果 count 為負值,返回最後一個分隔符右邊(因為是從右數分隔符)的所有內容作為子字元串返回。在尋找分隔符時,函數對大小寫是敏感的。如果在字元串 str 中找不到 delim 參數指定的值,就返回整個字元串。
mysql> select substring_index('home.cnblogs.com', '.', 2);
+---------------------------------------------------------+
| substring_index('home.cnblogs.com', '.', 2)             |
+---------------------------------------------------------+
| home.cnblogs                                            |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select substring_index('home.cnblogs.com', '/', 2);
+---------------------------------------------------------+
| substring_index('home.cnblogs.com', '/', 2)             |
+---------------------------------------------------------+
| home.cnblogs.com                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

四、substring() 與 substr() ---> substring(str, pos)、substring(str from pos)、substring(str, pos, len)、substring(str from pos for len)

在以上4種函數變種形式中,沒有 len 參數的函數形式會返回自 str 中位置 pos 處之後的子字元串;有 len 參數的函數形式會返回自 str 中位置 pos 處之後,長度為 len 的子字元串。使用 FROM 的函數形式則是採用的標準的 SQL 語法。pos 參數也可能取負值,在這種情況下,取字元串的方式是從字元串 str 的末尾向前(而非從前往後),從這種逆向順序的 pos 處開始取字元串。另外,負值的 pos 參數可用於任何形式的 substring() 函數中。
mysql> select substring('shinejaie', 6);
+---------------------------------------------------------+
| substring('shinejaie',6)                                |
+---------------------------------------------------------+
| jaie                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select substr('shinejaie' from 6);
+---------------------------------------------------------+
| substr('shinejaie' from 6)                              |
+---------------------------------------------------------+
| jaie                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select substring('shinejaie', -9, 5);
+---------------------------------------------------------+
| substring('shinejaie', -9, 5)                           |
+---------------------------------------------------------+
| shine                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

五、trim([{both | leading | trailing} [remstr] form] str)

將字元串 str去除 remstr 所指定的首碼或尾碼,返回結果字元串。如果沒有指定標識符bothleading,或trailing,則預設採用 both,即將前尾碼都刪除。remstr 其實是個可選參數,如果沒有指定它,則刪除的是空格。
mysql> select trim('  shinejaie   ');
+---------------------------------------------------------+
| trim('  shinejaie   ')                                  |
+---------------------------------------------------------+
| shinejaie                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select trim(leading 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(leading 'cn_' from 'cn_shinejaiecn_')              |
+---------------------------------------------------------+
| shinejaiecn_                                            |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select trim(both 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(both 'cn_' from 'cn_shinejaiecn_')                 |
+---------------------------------------------------------+
| shinejaie                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select trim(trailing 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(trailing 'cn_' from 'cn_shinejaiecn_')             |
+---------------------------------------------------------+
| cn_shinejaie                                            |
+---------------------------------------------------------+
1 row in set (0.00 sec)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄 Android多解析度適配實踐【0】基礎適配篇(撰寫中)Android多解析度適配實踐【1】使用字體圖標,精準控制不同解析度的圖標樣式(內含兩枚神器)Android多解析度適配實踐【2】Iconify中文使用說明Android多解析度適配實踐【3】Iconify擴展,自製或導入SVG字體圖標庫
  • 序言 網路連接狀態檢測對於我們的iOS app開發來說是一個非常通用的需求。為了更好的用戶體驗,我們會在無網路時展現本地或者緩存的內容,並對用戶進行合適的提示。對絕大部分iOS開發者來說,從蘋果示例代碼改變而來的各種Reachablity框架是實現這個需求的普遍選擇,比如這個庫。但事實上,基於此方案
  • +(UIColor *)colorWithHexString:(NSString *)coloStr{ // 檢索 去下空格和換行 轉成大寫 NSString *cString = [[coloStr stringByTrimmingCharactersInSet:[NSCharacterSet w
  • 提高OC代碼質量的小心機 一、OC特性 OC 為 C 語言添加了面向對象特性,是其超集; OC 使用動態綁定的消息結構,也就是,在運行時才會檢查對象類型; 接收一條消息後,究竟應執行何種代碼,由運行期環境來決定,而非編譯器;ps:理解C語言的核心概念有助於寫好OC程式,尤其要掌握記憶體模型與指針。 二
  • 本文由CocoaChina--BYB_1132(論壇ID)翻譯 原文:Thoughts On AlamoFire--Swift’s AFNetworking Implementation HTTP協議就是現代開發的同義詞,對於有經驗的iOS開發者來說, 熟悉並儘可能使用這些流行的協議是日常工作的基礎
  • 這是一張QQ空間說說詳情的截圖。 分析: 1、點擊右上角三個點的圖標,在界面底部彈出一個區域,這個區域有一些按鈕提供給我們操作 2、當該區域出現的時候,詳情界面便灰了,也說成透明度變化了 3、當任意選了一個按鈕或者點擊了該區域以外的部分,該區域消失,灰色界面變回亮白色,並執行點擊的按鈕對應的操作 顯
  • 這篇文章主要介紹一些小細節的優化技巧,當這些小技巧綜合使用起來的時候,對於整個App的性能提升還是有作用的,只是不能較大幅度的提升性能而已。選擇合適的演算法與數據結構才應該是你首要考慮的因素,在這篇文章中不會涉及這方面。你應該使用這篇文章中的小技巧作為平時寫代碼的習慣,這樣能夠提升代碼的效率。 通常來
  • 開發中遇到的問題:要實現一個button初始為不可點擊,於是在配置文件中設置了android:clickable="false"運行後發現還是可以點擊,於是寫在了Activity中:btn.setClickable(false);發現還是可以點擊,在網上查資料說android setClickabl
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...