【问题标题】:MySQL How to get numeric value after special character in varcharMySQL如何在varchar中的特殊字符后获取数值
【发布时间】:2016-02-01 02:36:01
【问题描述】:

我有以下记录..

ABC/290116/1    
ABC/290116/2    
ABC/290116/10

如何从这些记录中获得斜线“/”后最右边的数值(1、2、10、..)? 如果您有 PHP 代码来自动重置每月的值,不胜感激。

非常感谢

【问题讨论】:

  • 可能值得考虑该值的含义,以及是否应规范化数据库表。乍一看似乎违反了第一范式..

标签: mysql sql numeric


【解决方案1】:

在 MySQL 中,您将使用 substring_index():

select substring_index(col, '/', -1)
from t;

如果你想要这个数字:

select substring_index(col, '/', -1) + 1
from t;

【讨论】:

    【解决方案2】:

    假设您知道所有记录都将采用ABC/x/y 格式并且将有/ 作为分隔符,您可以使用explode() 执行以下操作:

    $record = "ABC/290116/10";
    $value = explode("/", $record);
    
    echo $value[2];
    

    请注意,在这种情况下,explode() 会将$record 拆分为三个部分,ABC29011610$value[2] 将为您提供第三部分。

    在您将遍历多条记录的情况下,请执行以下操作:

    $records = array (
        "ABC/290116/1", "ABC/290116/2", "ABC/290116/10"
    )
    
    foreach($records as $record) {
        $value = explode("/", $record);
        // Do something with your $value[2].
    }
    

    【讨论】:

    • 当我尝试用 mysql 调用 $record 时,我得到“警告:explode() 期望参数 2 是字符串”错误。我如何让这个 $record 成为一个字符串?
    • 已解决:我做了 $query=mysql_query("bla bla bla"); $record=mysql_fetch_array($query); $value=explode("/",$record[0]);
    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多