【发布时间】:2015-08-07 11:02:34
【问题描述】:
我有一个名为 members 的表列,包含 10k+ 条记录 一些成员名称旁边有一个数字,例如: 约翰·史密斯 (12) 简·多伊 (3)
是否有一个 sql 语句可用于从列中的所有值中删除“(数字)”?
【问题讨论】:
-
SELECT SUBSTRING_INDEX('Jane Doe (3)','(',1) n; -- Jane Doe
我有一个名为 members 的表列,包含 10k+ 条记录 一些成员名称旁边有一个数字,例如: 约翰·史密斯 (12) 简·多伊 (3)
是否有一个 sql 语句可用于从列中的所有值中删除“(数字)”?
【问题讨论】:
SELECT SUBSTRING_INDEX('Jane Doe (3)','(',1) n; -- Jane Doe
如果左括号仅用于数字,那么你可以这样做:
update table t
set name = substring_index(name, ' (', 1)
where name regexp ' ([0-9]+)';
我会先检查一下select:
select name, substring_index(name, ' (', 1)
from table t
where name regexp ' ([0-9]+)';
【讨论】:
你可以试试下面的字符串函数。这是一个工作示例http://sqlfiddle.com/#!9/20544/1
SELECT LEFT(NAME,INSTR(NAME,'(') - 1) New_Name from test;
【讨论】: