Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中每个单词的大写首字母(utf8)_Mysql_Ucfirst - Fatal编程技术网

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);
...