php - 解析特殊字符 - Function Mysql 5.5?

标签 php mysql

我评论说,在尝试创建一个函数来解析特殊字符并递归调用时遇到问题。

Mysql代码:

DROP FUNCTION IF EXISTS fn_obt_val_par_campo;
DELIMITER $$
CREATE FUNCTION fn_obt_val_par_campo(campo VARCHAR(80))
    RETURNS VARCHAR(80)
BEGIN

    DECLARE par_campo VARCHAR(80);
    DECLARE for_campo VARCHAR(80);
    DECLARE ind_campo INT DEFAULT 1;

    SET for_campo = LOWER(campo);

    WHILE ind_campo = 1 DO

        IF INSTR(for_campo, 'á') != 0 THEN
            SET par_campo = UPPER(REPLACE(for_campo, 'á', 'a'));
            SET for_campo = par_campo;
            SET ind_campo = 1;
        ELSEIF INSTR(for_campo, 'é') != 0 THEN
            SET par_campo = UPPER(REPLACE(for_campo, 'é', 'e'));
            SET ind_campo = 1;
        ELSEIF INSTR(for_campo, 'í') != 0 THEN
            SET par_campo = UPPER(REPLACE(for_campo, 'í', 'i'));
            SET ind_campo = 1;
        ELSEIF INSTR(for_campo, 'ó') != 0 THEN
            SET par_campo = UPPER(REPLACE(for_campo, 'ó', 'o'));
            SET ind_campo = 1;
        ELSEIF INSTR(for_campo, 'ú') != 0 THEN
            SET par_campo = UPPER(REPLACE(for_campo, 'ú', 'u'));
            SET ind_campo = 1;
        ELSE
            SET par_campo = UPPER(for_campo);
            SET ind_campo = 0;
        END IF;

    END WHILE;

    RETURN par_campo;

END;
$$
DELIMITER ;

咨询永无止境,连接被阻塞mysql:

SELECT fn_obt_val_par_campo('ALVARZ') AS CAMPO

希望您能帮助我解决我的问题。

最佳答案

这与特殊字符无关:

CREATE FUNCTION fn_obt_val_par_campo(campo VARCHAR(80))
    RETURNS VARCHAR(80);
                       ^---this is the error
BEGIN

create/begin 之间不允许使用分隔符,仅此而已。

关于php - 解析特殊字符 - Function Mysql 5.5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35897274/

相关文章:

mysql - 将 SELECT DISTINCT() 与 ORDER BY 一起使用时出错

php - 将多维数组信息插入数据库

mysql - 在 GROUP BY 中使用 LIMIT 来获得每组 N 个结果?

php - MySQL 在同一个 PHP 页面上加载和删除

php - 如何根据返回的MySQL对象设置对象变量

php - mysql如何对两行进行求和和相乘

mysql - 开始...结束与开始交易...提交

php - 在保存到数据库之前如何将 IP 地址转换为整数

php - 当结果来自循环时在 php 中格式化时间

javascript - 匹配直到下一行开始