将标题大小写转换为句子大小写:MySQL 查询将数据库列中每个句子的第一个字母大写

问题描述 投票:0回答:1

这是我今天遇到的一个问题,然后是我找到的解决方案。我希望您会发现它有用,或者适合您自己的情况。

我有一个 MySQL 数据库,其中一列充满标题大小写格式的句子。每个现有句子都以句点结尾,句子之间用空格分隔。如何将所有文本转换为句首格式?

例如,文本最初看起来像这样:

这是一只狗。那是一只猫。

我称之为“标题大小写”或“正确大小写”,但我需要的是“句子大小写”。我的意思是每个句子的第一个字母应该大写。

查询输出应该是:

这是一只狗。那是一只猫。

我将发布我的解决方案,但我欢迎任何建议或更正错误。

谢谢。

mysql database uppercase lowercase sentencecase
1个回答
0
投票

我尝试了以下代码并且它有效。我欢迎任何其他解决方案或建议。

DELIMITER //

CREATE FUNCTION CapitalizeSentences(input_text TEXT)
RETURNS TEXT
DETERMINISTIC
BEGIN
    DECLARE output_text TEXT;
    DECLARE period_pos INT;
    DECLARE sentence_start_pos INT;

    SET output_text = CONCAT(
        UPPER(SUBSTRING(input_text, 1, 1)),
        LOWER(SUBSTRING(input_text, 2))
    );

    SET period_pos = LOCATE('. ', output_text);
    WHILE period_pos > 0 DO
        SET sentence_start_pos = period_pos + 2;
        SET output_text = CONCAT(
            LEFT(output_text, sentence_start_pos - 1),
            UPPER(SUBSTRING(output_text, sentence_start_pos, 1)),
            SUBSTRING(output_text, sentence_start_pos + 1)
        );
        SET period_pos = LOCATE('. ', output_text, sentence_start_pos);
    END WHILE;

    RETURN output_text;
END //

DELIMITER ;


UPDATE table_name
SET `col_name` = CapitalizeSentences(`col_name`);

希望您觉得它有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.