这是我今天遇到的一个问题,然后是我找到的解决方案。我希望您会发现它有用,或者适合您自己的情况。
我有一个 MySQL 数据库,其中一列充满标题大小写格式的句子。每个现有句子都以句点结尾,句子之间用空格分隔。如何将所有文本转换为句首格式?
例如,文本最初看起来像这样:
这是一只狗。那是一只猫。
我称之为“标题大小写”或“正确大小写”,但我需要的是“句子大小写”。我的意思是每个句子的第一个字母应该大写。
查询输出应该是:
这是一只狗。那是一只猫。
我将发布我的解决方案,但我欢迎任何建议或更正错误。
谢谢。
我尝试了以下代码并且它有效。我欢迎任何其他解决方案或建议。
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`);
希望您觉得它有帮助。