我有一个包含如下字符串的列:
+-------------------+
| type |
+-------------------+
|cashback_percentage|
| cashback_fix |
| fix |
+-------------------+
我使用的查询是:
SELECT CONCAT(UCASE(LEFT(replace(type, " ", "_"), 1))) as new_type from mytable;
但我得到的结果是这样的:
+-------------------+
| new_type |
+-------------------+
| C |
| C |
| F |
+-------------------+
我希望结果删除下划线并用空格替换,并将每个单词的第一个字母大写,如下所示:
+-------------------+
| new_type |
+-------------------+
|Cashback Percentage|
| Cashback Fix |
| Fix |
+-------------------+
2条答案
按热度按时间biswetbf1#
你在正确的轨道上。这种方法是先进行连接,将第一个字母大写,然后对整个字符串进行替换,以便用空格替换下划线。
演示
5n0oy7gb2#
你可以用
Replace
```select replace(type, '_', ' ') from tb
CREATE FUNCTION CAP_FIRST (input VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE len INT;
DECLARE i INT;
END;
select CAP_FIRST(replace(type, '_', ' ')) from tb