请写一段SQL,反转分号分隔的数据,分号前后的整个字符串顺序不变,字符串里面的字符顺序反转得到如下结果:
时间: 2024-02-06 12:09:06 浏览: 108
字符串反转
假设有一个名为`my_table`的表,其中有一个名为`my_col`的列,存储了分号分隔的字符串数据,可以使用如下SQL将其反转:
```
SELECT
GROUP_CONCAT(REVERSE(SUBSTRING_INDEX(SUBSTRING_INDEX(my_col, ';', numbers.n), ';', -1)) SEPARATOR ';') AS reversed_col
FROM
(SELECT @row := @row + 1 AS n FROM (SELECT @row:=0) t, my_table) numbers
WHERE
CHAR_LENGTH(my_col) - CHAR_LENGTH(REPLACE(my_col, ';', '')) >= numbers.n - 1
GROUP BY
my_col;
```
该SQL使用了MySQL内置函数`REVERSE`和`SUBSTRING_INDEX`,以及`GROUP_CONCAT`函数将反转后的字符串再次拼接为分号分隔的形式。其中,`numbers`子查询用于生成从1到字符串中分号数量的数字序列,用于反转分号分割的每个子字符串。
阅读全文