【问题标题】:MySQL split string for INSERT用于 INSERT 的 MySQL 拆分字符串
【发布时间】:2022-01-07 13:26:07
【问题描述】:

我有一个字符串(长 17),例如“AAAAAAAAAAAAAAAA”,我需要将其写入 varchar(21) 字段,格式为“AAAA-AAAA-AAAA-AAAA-A”。

由于某种原因,它必须在 INSERT 语句中格式化,例如:

INSERT INTO table (field) VALUES (  FORMATED("AAAAAAAAAAAAAAAAA") )

我找不到每 4 个字符插入分隔符的方法,如果你知道怎么做,我会很感激你的帮助。

韦尔乔

【问题讨论】:

  • 可以创建MySQL函数FORMATTED()

标签: mysql insert mariadb


【解决方案1】:

您可以创建自定义函数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 个字符,您需要向函数添加基本验证。这很容易添加。

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2011-09-03
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多