gpt4 book ai didi

函数中的 MySQL 子字符串不返回空格

转载 作者:行者123 更新时间:2023-11-29 06:24:31 25 4
gpt4 key购买 nike

我有一个函数可以将文本更改为正确的大小写。

CREATE FUNCTION `fpropercasetest` (p_Value VARCHAR(8000))
RETURNS VARCHAR(8000)
BEGIN
DECLARE v_i INT; -- counter
DECLARE v_ProperCaseText VARCHAR(5000);
DECLARE v_Word VARCHAR(1000);
DECLARE v_isWhiteSpace TINYINT(1);
DECLARE v_c CHAR(1);

SET v_Word = '';
SET v_i = 1;
SET v_isWhiteSpace = 1;
SET v_ProperCaseText = '';

SET p_Value = LOWER(p_Value);

WHILE (v_i <= LENGTH(p_Value)+1) DO

SET v_c = SUBSTRING(p_Value,v_i,1);

IF v_isWhiteSpace = 1 THEN SET v_c = UPPER(v_c); END IF;

SET v_isWhiteSpace = CASE WHEN (ASCII(v_c) BETWEEN 48 AND 58) THEN 0
WHEN (ASCII(v_c) BETWEEN 64 AND 90) THEN 0
WHEN (ASCII(v_c) BETWEEN 96 AND 123) THEN 0
ELSE 1 END;

IF v_isWhiteSpace = 0 THEN
SET v_Word = CONCAT(v_Word, v_c);
ELSE
SET v_ProperCaseText = CONCAT(v_ProperCaseText, v_Word, v_c);
SET v_Word = '';
END IF;
SET v_i = v_i + 1;
END WHILE;
return v_ProperCaseText;
END;

您可以使用以下内容进行测试

SELECT fpropercasetest("this is just some text for you to test with");

当我输入任何带空格的文本时,我注意到它没有注册(例如,对于文本“这是一些文本”,它会返回“ThisIsSomeText”,它应该返回“这是一些文本”)

我用 Visual Studio 调试它并注意到子字符串只是完全忽略空格,它返回一个空字符串。

我完全被这个难住了,任何帮助将不胜感激。谢谢。

最佳答案

抱歉耽搁了,下类前我有几件事要处理,这是我想出的,它做你想让它做的事:

FUNCTION `upper_all`(p_Value VARCHAR(8000)) RETURNS varchar(8000) CHARSET latin1
BEGIN
DECLARE pos INT; -- counter
DECLARE result VARCHAR(1000);
SET p_Value = LOWER(p_Value);
SET p_Value = CONCAT(UCASE(LEFT(p_Value, 1)),LCASE(SUBSTRING(p_Value, 2)));
SET pos = LOCATE(' ',p_Value);
SET result = SUBSTR(p_Value,1,LOCATE(' ',p_Value));
SET p_Value = SUBSTR(p_Value FROM pos);
WHILE (pos > 0) DO
/*SET p_Value = CONCAT(p_Value,UCASE(LEFT(p_Value, pos)),LCASE(SUBSTRING(p_Value, 2)));*/

SET pos = LOCATE(' ',p_Value);
IF pos > 0 THEN
SET pos = pos + 1;
SET p_Value = SUBSTR(p_Value FROM pos);
END IF;
SET p_Value = CONCAT(UCASE(LEFT(p_Value, 1)),LCASE(SUBSTRING(p_Value, 2)));
SET result = CONCAT(result,SUBSTR(p_Value,1,LOCATE(' ',p_Value)));
END WHILE;
SET result = CONCAT(result,p_Value);
return result;
END

我没有时间为您注释掉它,它应该是不言自明的。它可以使用一点清理并稍微优化代码。

关于函数中的 MySQL 子字符串不返回空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com