我想修剪这个字符串(这些字符串存储在一个列中)
[17332] Rohayati Bakri [20611] Nazrie Haslieanie [20612] Nur Izzati(也存储在一列中)
Rohayati Bakri, Nazrie Haslieanie, Nur Izzati只使用Mysql查询。引用id -> xxxxx都具有相同的长度。
有可能吗?
发布于 2013-07-31 07:23:27
不幸的是,MySQL不支持REPLACE中的任何类型的正则表达式。一种蛮力方法是:
sed替换字符串这些命令是:
mysqldump -u login -p db your_table > dump.sqlsed 's/\[[0-9]\{5\}\]//g' dump.sql > newdump.sqlmysqlimport -u login -p db your_table < newdump.sql这可能会影响到与模式匹配的其他一些数据,因此您可以自己承担风险。
发布于 2013-07-31 06:55:24
在一个非常通用的层次上,您可以尝试它。
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
WHERE SomeOtherColumn LIKE '%PATTERN%'在您的例子中,您说这些是转义的,但是由于您没有具体说明它们是如何逃脱的,所以假设它们是逃到GREATERTHAN的
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '<')
WHERE articleItemLIKE '%GREATERTHAN%'由于您的查询实际上将在字符串中工作,执行其模式匹配的WHERE子句可能会提高任何性能--它实际上将为服务器生成更多的工作。除非您有另一个WHERE子句成员将使该查询执行得更好,否则只需执行如下的更新:
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '<')从完全不同的角度进来的:
您可以在选择数据时(而不是在保存数据时)执行此操作。
因此,与其:
SELECT MyURLString From MyTable你能做到的
SELECT REPLACE (MyURLString, 'GREATERTHAN', '<') as MyURLString From MyTable发布于 2013-07-31 07:01:40
你也可以尝试修剪功能。
UPDATE table_name SET col_name = SUBSTRING(col_name, 7)它将修剪前7个字符。
https://stackoverflow.com/questions/17963522
复制相似问题