将 first_name 和 last_name 列中的名称截断为 1 个字符的最有效方法是什么?
我有一个 mysql 数据库,我想将它交给开发人员,但我想对数据进行部分清理,以便两个名称记录下降到只是首字母。
我试图将 varchar 修改为 1 个字符,但 mysql 不会让我截断数据,它只会引发错误。在我交出它之前,我正在从数据库的转储中工作。我想掩盖名字而不使它们都一样。
将 first_name 和 last_name 列中的名称截断为 1 个字符的最有效方法是什么?
我有一个 mysql 数据库,我想将它交给开发人员,但我想对数据进行部分清理,以便两个名称记录下降到只是首字母。
我试图将 varchar 修改为 1 个字符,但 mysql 不会让我截断数据,它只会引发错误。在我交出它之前,我正在从数据库的转储中工作。我想掩盖名字而不使它们都一样。
update tablename set first_name=left(first_name, 1), last_name = left(last_name, 1)
但是,正如 Gordon Linoff 所提到的,如果表中有很多行,这可能会很昂贵
您可以like
在创建新表时使用,以便与旧表具有相同的列属性和定义。不过,请务必查看有关创建表时行为的手册like
,尤其是在您担心索引时。
create table new_table like old_table;
insert into new_table
select left(first_name, 1) as first_name, left(last_name, 1) as last_name, ..-- rest of columns
from old_table;
由于需要日志记录,更新所有行的成本相当高。最有效的方法可能是创建一个新表:
create table for_developer as
select left(first_name, 1) as first_name, left(last_name, 1) as last_name,
. . . -- rest of columns
from t;
你为什么不试试:
Update "you_table"
SET first_name = LEFT(first_name,1),
last_name = LEFT(last_name,1);