【问题标题】:Splitting value in MySQLMySQL中的拆分值
【发布时间】:2017-07-23 12:06:35
【问题描述】:

我想更新一个非常大的(1m 行)表上的字段。我想从以下位置更新它:

+-----------------------------------------------------------+
|                            ref                            |
+-----------------------------------------------------------+
| 0001___000000000003616655___IVANTI UK___TEMPLATE MATERIAL |
+-----------------------------------------------------------+

到:

+-------------------------------+
|              ref              |
+-------------------------------+
| IVANTI UK___TEMPLATE MATERIAL |
+-------------------------------+

所以基本上它只是将ref不是固定长度)从sid___sku___mfr___pnum更改为mfr___pnum格式。

在 PHP 中我会这样做(伪代码):

list($p['sid'], $p['sku'], $p['mfr'], $p['pnum']) = explode('___', $row['ref']);
$row['ref'] = $p['mfr'] . '___' . $p['pnum'];

想知道是否可以通过高性能查询直接使用 MySQL 来完成?

【问题讨论】:

  • @Akira,纳希尔,问题很清楚。只是这是关于他们的第 700 个问题,他们仍然不知道 Stack Overflow 不是代码编写服务。您需要展示您的研究成果。
  • @CodeCaster 可能是因为您是新手,甚至不知道从哪里开始?使用 PHP 或 JS 我会提供 sn-ps,但我对 MySQL 一无所知
  • 我可以推荐谷歌,这是一个很好的开始。我选择重复的问题是“mysql split string”的第一个命中,我相信你已经尝试过研究,但是你的问题中没有一个代码。显示失败的尝试也非常有用。但是谢谢你提醒我为什么要远离 php 和 mysql 标签。
  • 是的,为什么要花时间让自己变得更好,而你可以让别人投资他们的呢?

标签: php mysql


【解决方案1】:

select SUBSTRING_INDEX(ref,'___',-2) from test

0001___000000000003616655___IVANTI UK___TEMPLATE MATERIAL
=>
IVANTI UK___TEMPLATE MATERIAL

https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index

SUBSTRING_INDEX(str,delim,count)

返回字符串 str 在 count 出现之前的子字符串 分隔符 delim。如果计数是正数,则左边的所有内容 最后的分隔符(从左数)被返回。 如果计数是 负数,最后定界符右侧的所有内容(计数 从右侧)返回。 SUBSTRING_INDEX() 执行 搜索 delim 时区分大小写。

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2017-02-21
    • 2021-12-19
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多