You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除数据库字符串中第三个数字前的内容?SQL字符串处理求助

解决方案

1. 数据库直接处理(以 MySQL 为例)

如果需要在查询数据库时直接提取物料名称,可以组合使用字符串和正则函数完成:

代码示例

SELECT 
  REGEXP_REPLACE(SUBSTRING_INDEX(name, ' / ', -1), '^[0-9]+ ', '') AS material_name
FROM materials;

操作逻辑

  • 先用 SUBSTRING_INDEX(name, ' / ', -1) 提取第二个 / 分隔符之后的内容,比如从 302 / 1001 / 8 ДЮБЕЛ 8/60 中得到 8 ДЮБЕЛ 8/60;
  • 再用 REGEXP_REPLACE 去掉这部分开头的数字序列和后面的空格,最终留下纯物料名称。

2. 代码层面处理(以 PHP 为例)

如果是在业务代码里处理这些字符串,用正则表达式可以一步到位:

基础版代码

$rawMaterials = [
    "302 / 1001 / 8 ДЮБЕЛ 8/60",
    "304 / 1001 / 32 НИВИЛИР АЛУМИНИЕВ AV 180",
    "232 / 1004 / 34 РЕДУЦИР-ВЕНТИЛ ЗА КИСЛОРОД А ТИП",
    "549 / 1034 / 10051 ТРЪБА НЕРЪЖДАЕМА ШЕВНА 3/4\"",
    "455 / 1034 / 10053 ТРЪБА НЕРЪЖДАЕМА ШЕВНА 1 1/4\"",
    "603 / 7000 / 10086 ТРЪБА ПОДЦИНКОВАНА 2\"",
    "333 / 4001 / 10101 ТРЪБА ППР Ф 25 ММ.",
    "344 / 1002 / 10102 ТРЪБА ППР Ф 20 ММ."
];

foreach ($rawMaterials as $str) {
    $cleanName = preg_replace('/^\d+ \/ \d+ \/ \d+ /', '', $str);
    echo $cleanName . "\n";
}

兼容空格不固定的版本

如果原字符串中分隔符前后的空格数量不确定,可以用更灵活的正则:

$cleanName = preg_replace('/^\d+\s*\/\s*\d+\s*\/\s*\d+\s+/', '', $str);

操作逻辑

正则表达式会精准匹配字符串开头的「数字 + 分隔符 + 数字 + 分隔符 + 数字 + 空格」这一段,直接替换为空字符串,剩下的就是需要的物料名称。

内容的提问来源于stack exchange,提问作者k1op0ly apps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 08:48:15