MySQL中每个单词的大写首字母(utf8)
编辑:添加MySQL中每个单词的大写首字母(utf8),mysql,ucfirst,Mysql,Ucfirst,编辑:添加字符集utf8以输入参数并输出,使其工作。 我发现这个代码片段可以将每个单词的第一个字母转换为大写 DELIMITER $$ CREATE FUNCTION CAP_FIRST (INPUT VARCHAR(255) CHARSET utf8) RETURNS VARCHAR(255) CHARSET utf8 DETERMINISTIC BEGIN DECLARE len INT; DECLARE i INT; SET len = CHAR_LEN
字符集utf8
以输入参数并输出,使其工作。
我发现这个代码片段可以将每个单词的第一个字母转换为大写
DELIMITER $$
CREATE FUNCTION CAP_FIRST (INPUT VARCHAR(255) CHARSET utf8)
RETURNS VARCHAR(255) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE len INT;
DECLARE i INT;
SET len = CHAR_LENGTH(INPUT);
SET INPUT = LOWER(INPUT);
SET i = 0;
WHILE (i < len) DO
IF (MID(INPUT,i,1) = ' ' OR i = 0) THEN
IF (i < len) THEN
SET INPUT = CONCAT(
LEFT(INPUT,i),
UPPER(MID(INPUT,i + 1,1)),
RIGHT(INPUT,len - i - 1)
);
END IF;
END IF;
SET i = i + 1;
END WHILE;
RETURN INPUT;
END$$
DELIMITER ;
分隔符$$
首先创建函数CAP_(输入VARCHAR(255)字符集utf8)
返回VARCHAR(255)字符集utf8
确定性
开始
声明lenint;
声明i INT;
设置len=字符长度(输入);
设置输入=较低(输入);
设置i=0;
而(我)是这样做的
如果(MID(输入,i,1)=''或i=0),则
如果(我
虽然它适用于ascii字符串;它不适用于utf8
就像我在选择cap_first('tiếng việt')代码>;结果我得到了Ti?ng Vi?t
我的表格在utf8\u general\u ci
中,似乎需要使用集合名称来告诉函数您使用的是什么字符集。
尝试:
手册参考:
从
SET NAMES指示客户端将使用哪个字符集发送SQL
将语句发送到服务器。因此,集合名称“cp1251”告诉服务器,
“来自此客户端的未来传入消息是字符集
cp1251。“它还指定服务器应该使用的字符集
用于将结果发送回客户端
不确定在这种情况下是否需要指定排序规则。谢谢您的提醒。我确实在输入参数和输出中添加了字符集utf8,现在可以使用了<代码>首先创建函数CAP_(输入VARCHAR(255)字符集utf8)
返回VARCHAR(255)字符集utf8
...
SET NAMES utf8 COLLATION utf8_general_ci;
SET len = CHAR_LENGTH(INPUT);
...