MySQL切分函數substring()-大家get到這些點

2020-09-19 Java技術官

MySQL字符串截取函數主要有:left(), right(), substring(), substring_index() 四種。各有其使用場景。今天,讓我帶大家花幾分鐘時間來熟知它們,Mark!

小夥伴想精準查找自己想看的MySQL文章?喏 → MySQL專欄目錄 | 點擊這裡

目錄

  • 一、LEFT() 函數
  • 二、RIGHT() 函數
  • 三、SUBSTRING() 函數
  • 1.SUBSTRING(string,position)2.SUBSTRING(string,position,length)
  • 四、SUBSTRING_INDEX() 函數
  • 五、實戰操作
  • 附、一張心酸的照片

聲明一下:在MySQL中,下標索引是從1開始的,而不是像java中從0開始的喔!

一、LEFT() 函數

LEFT(string,length) ,從字符串string左邊第一位開始,截取長度為length個字符。length應大於0,如>=0,返回空字符串。示例如下:

mysql> SELECT LEFT(&39;,5) from web_info w;+------------------+| LEFT(&39;,5) |+------------------+| www.c |+------------------+1 row in set (0.00 sec)

二、RIGHT() 函數

LEFT(string,length) ,從字符串string右邊第一位開始,截取長度為length個字符,仍然是正向順序截取。length應大於0,如>=0,返回空字符串。

mysql> SELECT RIGHT(&39;,5) from web_info w;+-------------------------+| RIGHT(&39;,5) |+-------------------------+| n.net |+-------------------------+1 row in set (0.00 sec)

三、SUBSTRING() 函數

substring()是專門用來對字符串進行切分的函數,主要有兩種形式:

  • SUBSTRING(string,position);
  • SUBSTRING(string,position,length);

以下是上述兩類語句的SQL標準版本寫法,意義相同,它更長,但更具表現力。

SUBSTRING(string FROM position);SUBSTRING(string FROM position FOR length);

下面讓我們來一起看一下SUBSTRING()的兩種用法示例;

1.SUBSTRING(string,position)

  1. string:參數是要操作的字符串。
  2. position: 參數是一個&34;,用於指定子串的起始字符,position可以是正整數或負整數。若position大於操作字符串的長度,則返回空字符串。

例如,從「www.csdn.net」字符串中獲取子字符串:「csdn.net」,子串的位置必須從5開始,如以下SELECT語句:

mysql> SELECT substring(&39;,5) from web_info w;+-----------------------------+| substring(&39;,5) |+-----------------------------+| csdn.net |+-----------------------------+1 row in set (0.00 sec)

2.SUBSTRING(string,position,length)

除了string和position參數之外,SUBSTRING函數還有一個length參數。length是一個正整數,用於指定子字符串的字符數。如果length<=0,那麼會返回空字符串。

例如,獲取www.csdn.net中的csdn,SQL如下:

mysql> SELECT substring(&39;,5,4) from web_info w;+-------------------------------+| substring(&39;,5,4) |+-------------------------------+| csdn |+-------------------------------+1 row in set (0.00 sec)

或者通過配置position,從後往前數;SQL如下:

mysql> SELECT substring(&39;,-8,4) from web_info w;+--------------------------------+| substring(&39;,-8,4) |+--------------------------------+| csdn |+--------------------------------+1 row in set (0.00 sec)

又或者通過SQL標準方式來寫,SQL如下:

mysql> SELECT substring(&39; FROM 5 FOR 4) from web_info w;+----------------------------------------+| substring(&39; FROM 5 FOR 4) |+----------------------------------------+| csdn |+----------------------------------------+1 row in set (0.00 sec)

另外,MySQL中的 mid(), substr() 等價於 substring() 函數哦!

四、SUBSTRING_INDEX() 函數

SUBSTRING_INDEX(str,delim,count),是一個通過特定標識符&34;來截取子串的函數,我們日常使用頻率是很高的;

  • delim:通過該標識符來進行截取的,delim可以為任意字符,不要為空;
  • count:代表第幾次出現;count為正數,代表取標識符出現第count次之前的子串;負數則相反,取標識符出現第count次之後的子串。

例如:『www.csdn.net』,獲取第一次出現標識符』.&39;www.csdn.net&39;.&39;www.csdn.net&39;.&39;後面的子串,SQL如下;

mysql> SELECT SUBSTRING_INDEX(&39;,&39;,-2) from web_info w;+----------------------------------------+| SUBSTRING_INDEX(&39;,&39;,-2) |+----------------------------------------+| csdn.net |+----------------------------------------+1 row in set (0.00 sec)

想獲取兩個』.&39;www.csdn.net&39;.&39;.&39;www.csdn.net&39;.&39;.&39;.&39;.&39;.',-2) ;

修改後查詢:

mysql> SELECT * from web_info;+------+--------+------------+---------------------+| w_id | w_name | w_domain | pub_time |+------+--------+------------+---------------------+| 1 | CSDN | csdn.net | 2020-09-03 14:54:59 || 5 | 百度 | baidu.com | 2020-09-03 14:54:59 || 6 | 淘寶 | taobao.com | 2020-09-03 14:54:59 |+------+--------+------------+---------------------+3 rows in set (0.00 sec)

好了,MySQL的字符串切分函數今天就說到這兒,如果對小夥伴兒有用,請不要白嫖哦~~

相關焦點

  • 《MySQL 入門教程》第15篇MySQL常用函數之字符函數
    以下是 MySQL 中常見的字符函數和運算符:下面我們通過一些示例來說明這些函數的作用。例如:select substring(&39;, 3), substring(&39; from 3 for 3), substring(&39;, 0);substring(&39;, 3)|substring(&39; from 3 for 3)|substring(&39;, 0)|---------------------|------------------
  • mysql隨機函數的例子
    mysql隨機函數的例子,用過mysql的同學都知道rand()函數是最最常見的,要實現隨機數的功能,還非得藉助rand(),它的作用是產生0到1直接的隨機數,下面就列出幾個常見的用例。的數select round(rand()*270)+250as隨機250到520的數--或者select floor(rand()*270+250)隨機250到520的數
  • Mysql函數substring_index的用法
    說明 substring_index(「待截取有用部分的字符串」,「截取數據依據的字符」,截取字符的位置N) 案例 SELECT SUBSTRING_INDEX('15,151,152,16', ' , ' , 1)
  • 掌握mysql這些函數,10分鐘能做完的事,為什麼要用一天?
    函數是我們日常工作中使用頻率比較高的一部分,這一篇我們主要講講mysql常用的相關函數。 concat(str1,str2,str3) --返回一個或者多個字符串生成的新的字符串 trim(str) --刪除字符串兩側的空格 -- 重點 replace(s1,str,s2) --使用字符串s2替換s1中的字符串str substring
  • MySQL數據導入Hive-Java
    SqoopSqoop並不在這篇文章的範圍內,拿出來說的原因是,公司數據研發部門是通過Sqoop將資料庫數據導入到Hive中,其原理是將資料庫數據導入到HDFS中臨時存儲, 然後在將文件導入到Hive中,最終刪掉臨時存儲的文件。
  • MySQL字符串截取 和 截取字符進行查詢
    通過mysql自帶的一些字符串截取函數,對數據進行處理,下面是我整理的字符串截取 和 截取字符進行查詢。一、MySQL中字符串的截取MySQL中有專門的字符串截取函數:其中常用的有兩種:substring_index(str,delim,count) 和concat 1.substring_index(str,delim,count) 函數的使用較為普遍。
  • DOM - 封裝函數
    我們來學習封裝函數之前,先來回顧一下獲取元素節點的方法獲取元素節點的方法 我們之前學了有四個方法:1.Id document.getElementById();2.TagName node.getElementsByTagName();
  • MySQL常用的函數
    這些索引值對應於ODBC標準。  mysql> select DAYOFWEEK('1998-02-03');  -> 32 WEEKDAY(date)  返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
  • 面對億級數據,MySQL硬的起來麼?
    我覺得還是得通過實驗來見證一下,mysql面對百萬、千萬、億級別的數據時,查詢到底行不行???走索引,毫秒級響應,1億數據根本不是問題,即使是10億數據,速度也差不多,大家可以試試。再來個表,稍微複雜點創建test2表test2有3個欄位,後面2個欄位分別加了索引。
  • NumPy中對數組進行切分及一些基本概念
    數組切分上面講了使用棧操作把多個數組組裝到一起的方法。接下來看一下它的逆操作:把一個數組分為及部分。在NumPy中,該操作要用到切分方法。同理,我們也有一組函數,水平切分用hsplit( )函數,垂直切分用vsplit( )函數。
  • WEB滲透——mysql注入常用函數
    MYSQL常用函數1、 current_user()當前用戶名{2、 session_user 連結資料庫的用戶名3、 @@basedir mysql安裝路徑4、 @@datadir 資料庫路徑5、 @@version_compile_os 作業系統版本
  • php知識大通關——常見函數功能
    接上節內容,仍然以習題的方式講解php常見函數及功能! mysql_connect() mysql_query() mysql_close() 以上都不對解析:PHP 提供 mysql_connect() 函數來打開資料庫連接,不過,新版本建議使用 MySQLi 或 PDO 來連接。2、在php中,下面哪個函數用於在 PHP 中獲取環境變量?
  • MySQL函數基本用法
    一、前言函數在MySQL中是經常使用的,使用函數的目的在於方便,效率高,維護起來也方便。有的同學可能對這個函數比較陌生,我打個比方:求某列數據的平均值、求字符串長度等等,這些都可以用MySQL自帶的函數來處理。MySQL中封裝了很多函數,這樣,我們就可以直接用內置函數,豈不是很方便。當然MySQL也允許我們編寫自定義函數。
  • 技術分享 | MySQL 複製那點事-參數調查筆記
    根據前文的復現方法,需要去確認如下的 2 個點:dp 上 flush logs 的時候,da 獲取到 dp 的 binglog 做的操作;收到的 serverid 和本機一致的 binlog 的時候,da 的 MySQL 進程的操作。
  • 故障排除指南:MySQL的運行內存不足怎麼辦?
    本文將向大家介紹如何解決MySQL的內存分配問題。  從哪裡開始排除MySQL的內存洩漏問題  假設這是一個Linux的伺服器,我們首先要 檢查的Linux作業系統和配置 ,  1.檢查mysql錯誤日誌和Linux日誌文件(即/ var / log / messages或/ var / log / syslog)來識別崩潰。
  • mysql中find_in_set()函數的使用
    這時find_in_set函數就派上用場了。如果字符串str在由N個子字符串組成的字符串列表strlist中,則返回1到N範圍內的值。字符串列表是由,個字符分隔的子字符串組成的字符串。如果第一個參數是常量字符串,第二個參數是SET類型的列,則FIND_IN_SET()函數將優化為使用位算術。如果str不在strlist中或strlist是空字符串,則返回0。
  • 無內鬼來點乾貨,銀行java開發面試題(含答案)
    前言:這篇文章主要介紹了銀行java開發筆試面試題13道,小編昨天晚上在網上刷到的,覺得挺不錯的(最主要還是有答案),現在分享給大家,也給大家做個參考。4、String的substring()方法內部是如何實現的?又一個Java面試的好問題,你應該答出「substring方法通過原字符串創建了一個新的對象」,否則你的回答肯定是不能令人滿意的。這個問題也經常被拿來測試應聘者對於substring()可能帶來的內存洩漏風險是否有所了解。
  • 從Web查詢資料庫之PHP與MySQL篇
    然後,當準備使用用戶輸入的任何數據時,也要適當的過濾一些控制字符,當用戶輸入數據到資料庫時必須轉義數據,,此時 使用盜的函數有addslashes()函數、stripslashes()函數和get_magic_qutoes_gpc()函數。
  • Atlas 分布式版重磅來襲,360 的 MySQL 中間層
    同時,有超過50家公司在生產環境中部署了Atlas,超過800人已加入了我們的開發者交流群,並且這些數字還在不斷增加。Sharding 數據切分策略shard key每一個shard table都有一個shard key, 其可以是主鍵, 也可以是非主鍵, 但是這個列必須是一個整數. Atlas會利用這個shard key來判斷應該把這條記錄存放到哪一個資料庫組中.現在Atlas Shardingh支持兩種類型的數據切分: Range方式和Hash方式.
  • mysql學習詳記六&&關鍵字執行順序&mysql內置函數
    注意:雖然select在having後執行,但是mysql中仍然可以在having中使用select語句定義的別名。原因分析:mysql在查詢的時候會產生一個臨時表,所有的欄位名稱(別名)在臨時表中已經產生,產生了臨時表之後才會進行having操作。