欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL 字符串拆分實例(無分隔符的字符串截取)

 更新時間:2021年02月22日 11:24:55   作者:pjymyself  
這篇文章主要介紹了MySQL 字符串拆分實例(無分隔符的字符串截取),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

無分隔符的字符串截取

題目要求

數(shù)據(jù)庫中字段值:

實現(xiàn)效果:需要將一行數(shù)據(jù)變成多行

實現(xiàn)的sql

SELECT LEFT(SUBSTRING('P1111',help_topic_id+1),1) AS num FROM mysql.help_topic WHERE help_topic_id < LENGTH('P1111');

涉及的知識點

一、字符串截?。篠UBSTRING(str,pos)

1、參數(shù)說明

參數(shù)名 解釋
str 被截取的字符串
pos 從第幾位開始截取,當(dāng) pos 為正數(shù)時,表示從字符串開始第 pos 位開始取,直到結(jié)束;當(dāng)pos為負數(shù)時,表示從字符串倒數(shù)第 pos位開始取,直到結(jié)束。

2、 舉例

(一)從第2個字符開始獲取字符串'P1111'

SUBSTRING('P1111',2)

(二)從倒數(shù)第2個字符開始獲取字符串'P1111'

SUBSTRING('P1111',-2)

二、從左邊開始截取字符串:LEFT(str,len)

1、參數(shù)說明

參數(shù)名 解釋
str 被截取的字符串
len 正整數(shù),表示截取字符串從最左邊開始到第 len 位的值。

2、舉例

(一) 獲取字符串'P1111'最左邊的3個字符

LEFT('P1111',3)

Tip:

有從左邊開始截取字符串的函數(shù) LEFT(str,len),那當(dāng)然也有從右邊開始截取字符串的 RIGHT(str,len), 左右兩個函數(shù)原理一樣,區(qū)別在于是從左邊開始還是右邊開始截取字符串。

SQL解析

SELECT LEFT(SUBSTRING('P1111',help_topic_id+1),1) AS num FROM mysql.help_topic WHERE help_topic_id < LENGTH('P1111');

此處同樣利用 mysql 庫的 help_topic 表的 help_topic_id 來作為變量,因為 help_topic_id 是自增的,當(dāng)然也可以用其他表的自增字段輔助。

可參考 MySQL——字符串拆分(一)

實現(xiàn)步驟

Step1:

獲取字符串 ‘P1111' 的長度,利用 help_topic_id 來動態(tài)模擬對字符串 ‘P1111' 的遍歷

help_topic_id < LENGTH('P1111')

Step2:

利用 SUBSTRING(str,pos) 函數(shù) 和 help_topic_id 對字符串 ‘P1111' 進行截取。(此處“help_topic_id+1”的原因是 help_topic_id 是從0開始的,而 SUBSTRING 函數(shù)需從第1個位置開始截取字符串)

SUBSTRING('P1111',help_topic_id+1)

eg:

當(dāng) help_topic_id = 0 時,獲取到的字符串 = P1111

當(dāng) help_topic_id = 1 時,獲取到的字符串 = 1111

…(以此類推)

Step3:在實現(xiàn)第2步的基礎(chǔ)上,結(jié)合 LEFT(str,len) 函數(shù)來獲取第2步中最左邊的第1個字符

LEFT(SUBSTRING('P1111',help_topic_id+1),1)

eg:

根據(jù)第2步,當(dāng) help_topic_id = 0 時,獲取到的字符串 = P1111,此時第3步獲取的字符串 = P

根據(jù)第2步,當(dāng) help_topic_id = 1 時,獲取到的字符串 = 1111,此時第3步獲取的字符串 = 1

…(以此類推)

最終成功實現(xiàn)以下效果

注:含分隔符的字符串拆分可參考 MySQL——字符串拆分(含分隔符的字符串截?。?/a>

補充:mysql將查出的字符串拆分_Mysql拆分字符串查詢

我就廢話不多說了,大家還是直接看代碼吧~

DELIMITER $$
DROP FUNCTION IF EXISTS `tms1`.`GetClassName` $$
CREATE FUNCTION `GetClassName`(f_string VARCHAR(15000)) RETURNS varchar(15000)
BEGIN
/* 判斷字符串包含,的第一個位置*/
DECLARE THE_CNT INT(15) DEFAULT 1;
/* 班級編號*/
declare classId varchar(20) default '';
/* 返回的班級名稱*/
DECLARE result varchar(15000) DEFAULT null;
/* 班級名稱*/
DECLARE className varchar(50) DEFAULT '';
/* 字符串包含,的第一個位置*/
set THE_CNT = LOCATE(',',f_string);
/* 判斷字符串包含,的第一個位置是否存在*/
while (THE_CNT >= 0) do
/* ,位置不存在的場合*/
if THE_CNT = 0 then
/* 班級編號的設(shè)置*/
set classId = f_string;
else
/* 字符串中獲得班級編號*/
set classId = SUBSTRING_INDEX(SUBSTRING_INDEX(f_string, ',', 1), ',', -1);
end if ;
/* 根據(jù)班級編號獲得班級名稱*/
select (select name from class where id = classId) into className;
/* 返回班級編號的字符串為空的場合*/
if result is null then
/* 根據(jù)編號沒有查詢到班級名稱的場合*/
if className is null then
/* 設(shè)置班級名稱為空*/
set className = ' ';
end if;
/* 班級名稱追加到字符串*/
set result = className;
else
/* 根據(jù)編號沒有查詢到班級名稱的場合*/
if className is null then
/* 設(shè)置班級名稱為空*/
set className = '  ';
end if;
/* 班級名稱追加到字符串*/
set result = CONCAT(result,',',className);
end if;
/* ,位置不存在的場合*/
if THE_CNT = 0 then
/* 返回結(jié)果集*/
return result;
end if;
/* 截取傳入的字符串*/
set f_string = right(f_string,length(f_string) - THE_CNT);
/* 字符串包含,的第一個位置*/
set THE_CNT = LOCATE(',',f_string);
/* 結(jié)束遍歷*/
end while;
/* 返回結(jié)果集*/
return result;
END $$
DELIMITER ;

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

  • MySQL中字符串函數(shù)詳細介紹

    MySQL中字符串函數(shù)詳細介紹

    通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。
    2011-05-05
  • Mysql數(shù)據(jù)庫中數(shù)據(jù)的操作CRUD詳解

    Mysql數(shù)據(jù)庫中數(shù)據(jù)的操作CRUD詳解

    這篇文章主要介紹了Mysql數(shù)據(jù)庫中數(shù)據(jù)的操作(CRUD),詳細描述對Mysql數(shù)據(jù)庫中數(shù)據(jù)的操作(CRUD),包括插入、修改、刪除數(shù)據(jù),還有查詢數(shù)據(jù),包括where、in、like、ifnull、與或非、order by、聚集函數(shù)等,需要的朋友可以參考下
    2025-05-05
  • Mariadb遠程登陸配置及問題解決

    Mariadb遠程登陸配置及問題解決

    這篇文章主要介紹了Mariadb遠程登陸配置及問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • mysqladmin、mysqlshow、mysqlcheck的工具使用

    mysqladmin、mysqlshow、mysqlcheck的工具使用

    我們一般使用mysql客戶端工具來進行日常的數(shù)據(jù)庫操作,本文主要介紹了mysqladmin、mysqlshow、mysqlcheck的工具使用,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • MySQL 8.0數(shù)據(jù)字典的初始化與啟動流程

    MySQL 8.0數(shù)據(jù)字典的初始化與啟動流程

    數(shù)據(jù)字典(Data Dictionary, DD)用來存儲數(shù)據(jù)庫內(nèi)部對象的信息,這些信息也被稱為元數(shù)據(jù)(Metadata),包括schema名稱、表結(jié)構(gòu)、存儲過程的定義等,本文主要介紹MySQL 8.0數(shù)據(jù)字典的基本概念和數(shù)據(jù)字典的初始化與啟動加載的主要流程,需要的朋友可以參考下
    2024-06-06
  • MySQLJSON索引用法舉例簡單介紹

    MySQLJSON索引用法舉例簡單介紹

    索引是一個數(shù)據(jù)結(jié)構(gòu),索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)(有序),這篇文章主要給大家介紹了關(guān)于MySQLJSON索引用法的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 在linux服務(wù)器上配置mysql并開放3306端口的操作步驟

    在linux服務(wù)器上配置mysql并開放3306端口的操作步驟

    這篇文章主要介紹了在linux服務(wù)器上配置mysql并開放3306端口,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Mysql普通索引與唯一索引的選擇詳析

    Mysql普通索引與唯一索引的選擇詳析

    這篇文章主要給大家介紹了關(guān)于Mysql普通索引與唯一索引的選擇的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • mysql binlog(二進制日志)查看方法

    mysql binlog(二進制日志)查看方法

    在本篇文章里小編給大家分享了關(guān)于mysql binlog(二進制日志)查看方法,有需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • 最新評論