MySQL 为 INSERT 拆分字符串
MySQL split string for INSERT
我有一个字符串(长 17),如“AAAAAAAAAAAAAAAAAA”,我需要将其写入格式为“AAAA-AAAA-AAAA-AAAA-A”的 varchar(21) 字段中。
出于某种原因,它必须在 INSERT 语句中格式化为:
INSERT INTO table (field) VALUES ( FORMATED("AAAAAAAAAAAAAAAAA") )
我找不到每 4 个字符插入分隔符的方法,如果您知道如何操作,我会感谢您的帮助。
韦尔乔
您可以创建自定义函数 formatted()
,如下所示:
create function formatted(n varchar(17))
returns varchar(21)
begin
return concat(
substring(n, 1, 4),
'-',
substring(n, 5, 4),
'-',
substring(n, 9, 4),
'-',
substring(n, 13, 4),
'-',
substring(n, 17, 1)
);
end;
//
然后,就是在插入行的时候调用它了。例如:
insert into t (f) values (formatted('12345678901234567'));
结果:
f
---------------------
1234-5678-9012-3456-7
请参阅 db<>fiddle 中的 运行 示例。
注意:当然,如果参数短于或长于 17 个字符,则您需要向函数添加基本验证。这很容易添加。
我有一个字符串(长 17),如“AAAAAAAAAAAAAAAAAA”,我需要将其写入格式为“AAAA-AAAA-AAAA-AAAA-A”的 varchar(21) 字段中。
出于某种原因,它必须在 INSERT 语句中格式化为:
INSERT INTO table (field) VALUES ( FORMATED("AAAAAAAAAAAAAAAAA") )
我找不到每 4 个字符插入分隔符的方法,如果您知道如何操作,我会感谢您的帮助。
韦尔乔
您可以创建自定义函数 formatted()
,如下所示:
create function formatted(n varchar(17))
returns varchar(21)
begin
return concat(
substring(n, 1, 4),
'-',
substring(n, 5, 4),
'-',
substring(n, 9, 4),
'-',
substring(n, 13, 4),
'-',
substring(n, 17, 1)
);
end;
//
然后,就是在插入行的时候调用它了。例如:
insert into t (f) values (formatted('12345678901234567'));
结果:
f
---------------------
1234-5678-9012-3456-7
请参阅 db<>fiddle 中的 运行 示例。
注意:当然,如果参数短于或长于 17 个字符,则您需要向函数添加基本验证。这很容易添加。