mysql - 如何在字符串MySQL中的每个字符后插入空格

标签 mysql

我有一个字符串,出于报告/对齐的目的,我需要在每个字符后插入一个空格。不幸的是,我将不得不在 SQL 中执行此操作,否则我可以编写格式函数。

例如"abcd123"将其转换为 "a b c d 1 2 3 "。

由于它是针对相当多的行,我想知道每次解析每个字符并构建一个新字符串的优化程度如何?

感谢任何帮助。

谢谢

最佳答案

这是一个可以解决您的问题的快速而肮脏的 mysql 函数:

delimiter ||
DROP FUNCTION IF EXISTS concat_whitespace||
CREATE FUNCTION concat_whitespace( x longtext) RETURNS longtext
LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA 
BEGIN
DECLARE len INT UNSIGNED;
DECLARE erg LONGTEXT;
SET len = LENGTH(x);
REPEAT
SET erg = CONCAT_WS(' ',SUBSTRING(x,len,1),erg);
SET len = len - 1;
UNTIL len < 1 END REPEAT;
return erg;
END;
||

现在试试这个:

Select concat_whitespace("abcd123")

返回 “a b c d 1 2 3”

这个函数基本上是循环每个字符并连接一个空格。方向是从头到尾,保存一个计数器变量。

我还没有做过任何性能测试,相信你可以以某种方式优化它..

关于mysql - 如何在字符串MySQL中的每个字符后插入空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928392/

相关文章:

MySQL 慢查询 'COUNT'

php - 在每次页面加载时从数据库序列化数据读/写不好吗?

mysql - 如何处理必要的重复条目

java - 如何使用spark和java在mysql中插入模型

mysql - 强制添加未使用旧删除行的 auto_increment ID 的新行

sql - 需要一组字符串的MySQL函数?

php - Laravel 中的迁移错误

mysql - mysql查询中缺少数据,内部连接需要条件语句

mysql - 在 mySQL 中表示新闻帖子

php - 如何使用另一个 php 文件中的变量