-1

将 first_name 和 last_name 列中的名称截断为 1 个字符的最有效方法是什么?

我有一个 mysql 数据库,我想将它交给开发人员,但我想对数据进行部分清理,以便两个名称记录下降到只是首字母。

我试图将 varchar 修改为 1 个字符,但 mysql 不会让我截断数据,它只会引发错误。在我交出它之前,我正在从数据库的转储中工作。我想掩盖名字而不使它们都一样。

4

4 回答 4

1
update tablename set first_name=left(first_name, 1), last_name = left(last_name, 1)

但是,正如 Gordon Linoff 所提到的,如果表中有很多行,这可能会很昂贵

于 2020-03-10T19:14:19.083 回答
0

您可以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;
于 2020-03-10T19:33:36.507 回答
0

由于需要日志记录,更新所有行的成本相当高。最有效的方法可能是创建一个新表:

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;
于 2020-03-10T19:10:36.990 回答
0

你为什么不试试:

Update "you_table"
SET first_name = LEFT(first_name,1), 
last_name = LEFT(last_name,1);
于 2020-03-10T19:19:26.037 回答