首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除Mysql列中的多个字符串

问如何删除Mysql列中的多个字符串
EN

Stack Overflow用户
提问于 2013-07-31 06:51:19
回答 4查看 1.3K关注 0票数 0

我想修剪这个字符串(这些字符串存储在一个列中)

代码语言:javascript
复制
 [17332] Rohayati Bakri [20611] Nazrie Haslieanie [20612] Nur Izzati

(也存储在一列中)

代码语言:javascript
复制
 Rohayati Bakri, Nazrie Haslieanie, Nur Izzati

只使用Mysql查询。引用id -> xxxxx都具有相同的长度。

有可能吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-31 07:23:27

不幸的是,MySQL不支持REPLACE中的任何类型的正则表达式。一种蛮力方法是:

  • 转储表
  • 用sed替换字符串
  • 进口表

这些命令是:

  • mysqldump -u login -p db your_table > dump.sql
  • sed 's/\[[0-9]\{5\}\]//g' dump.sql > newdump.sql
  • mysqlimport -u login -p db your_table < newdump.sql

这可能会影响到与模式匹配的其他一些数据,因此您可以自己承担风险。

票数 0
EN

Stack Overflow用户

发布于 2013-07-31 06:55:24

在一个非常通用的层次上,您可以尝试它。

代码语言:javascript
复制
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
WHERE SomeOtherColumn LIKE '%PATTERN%'

在您的例子中,您说这些是转义的,但是由于您没有具体说明它们是如何逃脱的,所以假设它们是逃到GREATERTHAN的

代码语言:javascript
复制
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '<')
WHERE articleItemLIKE '%GREATERTHAN%'

由于您的查询实际上将在字符串中工作,执行其模式匹配的WHERE子句可能会提高任何性能--它实际上将为服务器生成更多的工作。除非您有另一个WHERE子句成员将使该查询执行得更好,否则只需执行如下的更新:

代码语言:javascript
复制
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '<')

从完全不同的角度进来的:

您可以在选择数据时(而不是在保存数据时)执行此操作。

因此,与其:

代码语言:javascript
复制
SELECT MyURLString From MyTable

你能做到的

代码语言:javascript
复制
SELECT REPLACE (MyURLString, 'GREATERTHAN', '<') as MyURLString From MyTable
票数 0
EN

Stack Overflow用户

发布于 2013-07-31 07:01:40

你也可以尝试修剪功能。

代码语言:javascript
复制
UPDATE table_name SET col_name = SUBSTRING(col_name, 7)

它将修剪前7个字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17963522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档