最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySql 字符串中提取數(shù)字的實現(xiàn)示例

 更新時間:2023年09月20日 11:02:55   作者:菜鳥小杰子  
在MySQL中,有時需要從字符串中提取數(shù)字,本文就來介紹一下MySql 字符串中提取數(shù)字的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下

一、前言

在MySQL中,有時需要從字符串中提取數(shù)字。在這種情況下,我們可以使用一些函數(shù)來實現(xiàn)該效果。但是,這些函數(shù)中的一些可能會提取字符串中的所有數(shù)字,而其他函數(shù)可能只會提取最長的數(shù)字字符序列。因此,我們需要了解每個函數(shù)的行為及其應(yīng)用場景。

二、mysql 內(nèi)置函數(shù)

1. REGEXP_REPLACE()函數(shù)

REGEXP_REPLACE()函數(shù)可以用于從字符串中刪除任何不是數(shù)字的字符,留下數(shù)字字符。以下是一個例子:

SELECT REGEXP_REPLACE("abc123def456", '[^0-9]', '');
// Output: 123456

其中的正則表達式[^0-9]表示是否出現(xiàn)除0-9以外的字符,替換掉原來的字符串中的所有非數(shù)字字符。

2. REGEXP_SUBSTR()函數(shù)

REGEXP_SUBSTR()函數(shù)可以用于從字符串中提取匹配正則表達式的字串。以下是一個例子:

SELECT REGEXP_SUBSTR("name123_phone456", '[0-9]+');
// Output: 123

其中的正則表達式[0-9]+表示會選擇字符串中的一個或多個數(shù)字。

3. SUBSTRING()函數(shù)結(jié)合正則表達式

另一種方法是使用SUBSTRING()函數(shù)和正則表達式,可以從字符串中提取數(shù)字序列。以下是一個例子:

SELECT SUBSTRING("abc123def456",LOCATE("123", "abc123def456"), 
    LOCATE("456", "abc123def456")-LOCATE("123", "abc123def456")+1);
// Output: 123def456

其中LOCATE()函數(shù)用于找到字符串中某個子字符串的位置,然后使用SUBSTRING()函數(shù)從該位置開始提取包含在“123”和“456”之間的字符串。如果你想要提取數(shù)字序列,請使用正則表達式。

三、自定義函數(shù)

下面是一個基于循環(huán)的MySQL自定義函數(shù),用于從輸入的字符串中提取所有數(shù)字字符并將其組合成一個整數(shù):

一、函數(shù)1

DROP FUNCTION IF EXISTS `number_extract`;
DELIMITER $$
CREATE FUNCTION `number_extract`(string_inport VARCHAR(255)) 
RETURNS INT
NO SQL
BEGIN
    DECLARE ctrNumber VARCHAR(255);
    DECLARE finNumber VARCHAR(255) DEFAULT '';
    DECLARE sChar VARCHAR(1);
    DECLARE inti INTEGER DEFAULT 1;
    IF LENGTH(string_inport) > 0 THEN
        WHILE(inti <= LENGTH(string_inport)) DO
            SET sChar = SUBSTRING(string_inport, inti, 1);
            SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9'); 
            IF ctrNumber > 0 THEN
                SET finNumber = CONCAT(finNumber, sChar);
            END IF;
            SET inti = inti + 1;
        END WHILE;
        RETURN CAST(finNumber AS UNSIGNED);
    ELSE
        RETURN 0;
    END IF;    
END$$
DELIMITER ;

該函數(shù)接受一個VARCHAR(255)類型的字符串參數(shù),并返回一個整數(shù)值。函數(shù)使用了一個while循環(huán)來遍歷字符串中的每個字符。如果字符是數(shù)字,則將其添加到finNumber字符串中。在循環(huán)結(jié)束后,使用MySQL內(nèi)置的CAST()函數(shù)將finNumber字符串轉(zhuǎn)換為整數(shù)類型。

二、函數(shù)2

如果需要從輸入的字符串中提取特定數(shù)量的連續(xù)數(shù)字字符并將其組合成一個整數(shù),我們可以使用兩個自定義函數(shù)。

DROP FUNCTION IF EXISTS `number_extract_n1`;
DELIMITER $$
CREATE FUNCTION `number_extract_n1`(string_inport VARCHAR(255), num_digits INT) 
RETURNS INT
NO SQL
BEGIN
    DECLARE ctrNumber VARCHAR(255);
    DECLARE finNumber VARCHAR(255) DEFAULT '';
    DECLARE sChar VARCHAR(1);
    DECLARE inti INTEGER DEFAULT 1;
    IF LENGTH(string_inport) > 0 AND num_digits > 0 THEN
        WHILE(inti <= LENGTH(string_inport)) DO
            SET sChar = SUBSTRING(string_inport, inti, 1);
            SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9'); 
            IF ctrNumber > 0 THEN
                SET finNumber = CONCAT(finNumber, sChar);
                IF LENGTH(finNumber) = num_digits THEN
                    SET inti = LENGTH(string_inport)+1;
                END IF;
            END IF;
            SET inti = inti + 1;
        END WHILE;
        RETURN CAST(finNumber AS UNSIGNED);
    ELSE
        RETURN 0;
    END IF;    
END$$
DELIMITER ;

該函數(shù)接受兩個參數(shù),一個VARCHAR(255)類型的字符串和一個INT類型的數(shù)字。函數(shù)返回一個整數(shù),該整數(shù)由輸入字符串中的指定數(shù)量的連續(xù)數(shù)字字符組成。

函數(shù)遍歷輸入的字符串并掃描每個字符,如果字符是數(shù)字,則將其添加到finNumber字符串中。在finNumber中包含所需數(shù)量的數(shù)字字符時,函數(shù)將循環(huán)終止并返回finNumber轉(zhuǎn)換為整數(shù)類型的值。

三、函數(shù)3

DROP FUNCTION IF EXISTS `number_extract_n2`;
DELIMITER $$
CREATE FUNCTION `number_extract_n2`(string_inport VARCHAR(255), start_idx INT, num_digits INT) 
RETURNS INT
NO SQL
BEGIN
    DECLARE ctrNumber VARCHAR(255);
    DECLARE finNumber VARCHAR(255) DEFAULT '';
    DECLARE sChar VARCHAR(1);
    DECLARE inti INTEGER DEFAULT start_idx;
    DECLARE end_idx INTEGER DEFAULT start_idx + num_digits;
    IF LENGTH(string_inport) &gt; 0 AND num_digits &gt; 0 AND end_idx &lt;= LENGTH(string_inport) THEN
        WHILE(inti &lt;= end_idx) DO
            SET sChar = SUBSTRING(string_inport, inti, 1);
            SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9'); 
            IF ctrNumber &gt; 0 THEN
                SET finNumber = CONCAT(finNumber, sChar);
            ELSE
                RETURN 0;
            END IF;
            SET inti = inti + 1;
        END WHILE;
        RETURN CAST(finNumber AS UNSIGNED);
    ELSE
        RETURN 0;
    END IF;    
END$$
DELIMITER ;

該函數(shù)接受三個參數(shù),一個VARCHAR(255)類型的字符串,一個INT類型的數(shù)字表示起始索引值,一個INT類型的數(shù)字表示要提取的數(shù)字字符的數(shù)量。

函數(shù)遍歷輸入字符串的子字符串,并掃描每個字符,如果字符是數(shù)字,則將其添加到finNumber字符串中。如果finNumber包含所需數(shù)量的數(shù)字字符,則函數(shù)將返回finNumber字符串轉(zhuǎn)換為整數(shù)類型的值。如果沒有提取到足夠數(shù)量的連續(xù)數(shù)字字符,函數(shù)將返回0。

 四、后語

我們介紹了三個自定義函數(shù)以及MySQL內(nèi)置函數(shù)REGEXP_REPLACE()、REGEXP_SUBSTR()和SUBSTRING(),這些函數(shù)可以從輸入的字符串中提取數(shù)字。我們還了解了每個函數(shù)的行為及其應(yīng)用場景。

REGEXP_REPLACE()函數(shù)可用于從字符串中刪除任何不是數(shù)字的字符,留下數(shù)字字符。

REGEXP_SUBSTR()函數(shù)可用于從字符串中提取匹配正則表達式的字串。

SUBSTRING()函數(shù)結(jié)合正則表達式可以從字符串中提取數(shù)字序列。

自定義函數(shù)1可以從字符串中提取所有數(shù)字字符并將其組合成一個整數(shù)。

自定義函數(shù)2和3可用于從輸入的字符串中提取連續(xù)數(shù)字字符,并將其組合成一個指定數(shù)量的整數(shù)。

選擇適當?shù)暮瘮?shù)來提取數(shù)字字符是十分重要的,取決于我們需要哪些數(shù)字字符以及是否必須是連續(xù)的數(shù)字字符。在實際應(yīng)用中,應(yīng)該根據(jù)實際情況進行選擇,以便快速高效地實現(xiàn)所需的結(jié)果。

到此這篇關(guān)于MySql 字符串中提取數(shù)字的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)MySql 字符串提取數(shù)字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL 跨庫查詢示例場景分析

    MySQL 跨庫查詢示例場景分析

    在 MySQL 數(shù)據(jù)庫應(yīng)用場景中,有時需要從多個數(shù)據(jù)庫中獲取數(shù)據(jù)并進行關(guān)聯(lián)分析或綜合處理,這就涉及到跨庫查詢操作,本指南將詳細介紹 MySQL 跨庫查詢的方法、注意事項以及相關(guān)示例,感興趣的朋友一起看看吧
    2025-04-04
  • mysql常用函數(shù)與視圖索引全面梳理

    mysql常用函數(shù)與視圖索引全面梳理

    這篇文章主要介紹了mysql的常用函數(shù)與視圖索引的特點與作用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • PHP定時備份MySQL與mysqldump語法參數(shù)詳解

    PHP定時備份MySQL與mysqldump語法參數(shù)詳解

    本文為大家介紹了PHP利用mysqldump命令定時備份MySQL與mysqldump語法參數(shù)大全以及定時備份的PHP實例代碼
    2018-10-10
  • mysql版本5.5.x升級到5.6.x步驟分享

    mysql版本5.5.x升級到5.6.x步驟分享

    在我做的一個項目中,最近我對生產(chǎn)服務(wù)器上的一系列系統(tǒng)軟件進行了升級,包括git、nginx、MySQL和PHP。這篇文章講的是升級MySQL的過程,其他軟件的升級將在其他文章中介紹。
    2016-01-01
  • MySQL?強制使用特定索引的操作

    MySQL?強制使用特定索引的操作

    MySQL可通過FORCEINDEX、USEINDEX等語法強制查詢使用特定索引,但優(yōu)化器可能不采納,需結(jié)合EXPLAIN分析執(zhí)行計劃,避免性能下降,注意版本差異,建議優(yōu)化索引結(jié)構(gòu)而非強制使用,本文介紹MySQL?強制使用特定索引的操作,感興趣的朋友一起看看吧
    2025-07-07
  • 一文詳解如何在MySQL中創(chuàng)建函數(shù)

    一文詳解如何在MySQL中創(chuàng)建函數(shù)

    這篇文章主要為大家介紹了一文詳解如何在MySQL中創(chuàng)建函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • MySQL產(chǎn)生隨機數(shù)并連接字符串的方法示例

    MySQL產(chǎn)生隨機數(shù)并連接字符串的方法示例

    這篇文章主要介紹了MySQL產(chǎn)生隨機數(shù)并連接字符串的方法,簡單分析了相關(guān)函數(shù),并結(jié)合實例形式給出了相應(yīng)的SQL語句實現(xiàn)方法,需要的朋友可以參考下
    2017-05-05
  • MySQL中慢SQL優(yōu)化的不同方式介紹

    MySQL中慢SQL優(yōu)化的不同方式介紹

    慢 SQL 的優(yōu)化,主要從兩個方面考慮,SQL 語句本身的優(yōu)化,以及數(shù)據(jù)庫設(shè)計的優(yōu)化,下面小編就來給大家介紹一下有哪些方式可以優(yōu)化慢 SQL吧
    2025-03-03
  • MySQL數(shù)據(jù)庫高級查詢和多表查詢

    MySQL數(shù)據(jù)庫高級查詢和多表查詢

    這篇文章主要介紹了MySQL數(shù)據(jù)庫高級查詢和多表查詢,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • mysql創(chuàng)建數(shù)據(jù)庫,添加用戶,用戶授權(quán)實操方法

    mysql創(chuàng)建數(shù)據(jù)庫,添加用戶,用戶授權(quán)實操方法

    在本篇文章里小編給大家整理的是關(guān)于mysql創(chuàng)建數(shù)據(jù)庫,添加用戶,用戶授權(quán)實操方法相關(guān)知識點,需要的朋友們學習下。
    2019-10-10

最新評論

阿拉善左旗| 宿松县| 山东省| 乾安县| 扎兰屯市| 中西区| 额济纳旗| 高平市| 绥芬河市| 进贤县| 阿克陶县| 咸阳市| 合江县| 乌海市| 会泽县| 榆社县| 乃东县| 芦山县| 安阳市| 师宗县| 巴塘县| 淮南市| 翁源县| 兴义市| 宜兰市| 陵水| 简阳市| 岫岩| 容城县| 凤庆县| 肥东县| 霍林郭勒市| 临沂市| 新泰市| 黄浦区| 白玉县| 连州市| 宁海县| 贵德县| 怀安县| 金溪县|