我有一个字符串,出于报告/对齐的目的,我需要在每个字符后插入一个空格。不幸的是,我将不得不在 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/