mysql字符串处理例子

项目中用到的,要判断表中某个字段的某几位,若为某个值则替换,用到了几个典型的字符串操作,记录备注实现方案如下:

备注:如果替代字符串是唯一的话,可以用replace,这里用的是concat拼接。

DELIMITER //
DROP PROCEDURE IF EXISTS p_modify_year;
CREATE PROCEDURE p_modify_year()
BEGIN
    DECLARE tmpid int(8);
    DECLARE tmppcidd varchar(20);
    DECLARE tmpprocode varchar(20);
    DECLARE done INT DEFAULT FALSE;
    DECLARE cur CURSOR FOR SELECT product.id FROM product WHERE prostatus=0;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    OPEN cur;

    myloop: LOOP

        FETCH cur INTO tmpid;

        IF done THEN
            LEAVE myloop;
        END IF;

        SELECT SUBSTRING(product.pcidd,2,2), product.procode INTO tmppcidd, tmpprocode FROM product WHERE id = tmpid;
             //pcidd和procode中第2、3位为16则替换成AU,其中procode可能为空。
        IF tmppcidd = ‘16‘ THEN
            UPDATE upe_product
            set pcidd = CONCAT(SUBSTRING(pcidd, 1, 1), ‘AU‘, SUBSTRING(pcidd, 4, LENGTH(pcidd)+1))
            WHERE id = tmpid;

            IF !ISNULL(tmpprocode) THEN
                UPDATE product set procode = CONCAT(SUBSTRING(procode, 1, 1), ‘AU‘, SUBSTRING(procode, 4, LENGTH(procode)+1)) WHERE id = tmpid;

            END IF;

        END IF;

        SET tmpprocode = NULL;
        SET tmppcidd = NULL;

        SET done = FALSE;

    END LOOP;
    CLOSE cur;
END
//
时间: 2024-08-19 06:33:44

mysql字符串处理例子的相关文章

Mysql字符串字段判断是否包含某个字符串的3种方法

方法一: SELECT * FROM users WHERE emails like "%[email protected]%"; 方法二: 利用MySQL 字符串函数 find_in_set(); SELECT * FROM users WHERE find_in_set('[email protected]', emails); 这样是可以的,怎么理解呢? mysql有很多字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必

Mysql Order By 字符串排序,mysql 字符串order by

Mysql Order By 字符串排序,mysql 字符串order by ============================== ?Copyright 蕃薯耀 2017年9月30日 http://fanshuyao.iteye.com/ 一.问题描述: Mysql排序时如果用的的字段为字符串型的,排序规则是这样的:如1,10,2,20,3,4,5,这种排序是按照字符从第一个字符开始比较出来的,但不是我想要的,我想要的是:1,2,3,4,5--,10,20这种. 二.解决方案 排序时,把

Mysql字符串字段判断是否包含某个字符串的方法

方法一:like SELECT * FROM 表名 WHERE 字段名 like "%字符%";方法二:find_in_set() 利用mysql 字符串函数 find_in_set(); SELECT * FROM users WHERE find_in_set('字符', 字段名);mysql有很多字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开. 注:当str2为NO1:“3,6,1

MySQL字符串函数substring:字符串截取

MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活. 1. 字符串截取:left(str, length) mysql> select left('example.com', 3);+-------------------------+| left('example.

MySQL字符串函数、日期时间函数

MySQL字符串函数.日期时间函数 一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左.取右 6.LENGTH   获取长度(字节为单位) 7.LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8.STRCMP  字符串比较 9.CONCAT  字符串拼接 10.SUBSTRING  字符串截取 1.CHAR_LENGTH:获取长度(字符

Mysql字符串字段中是否包含某个字符串,用 find_in_set

有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间代表不同权限的值,分别被‘,’分开,现在要取出具有某权限的所有成员列表. 创建表: 1 CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),name VARCHAR(20) NOT NULL,limits VARCHAR(50) NOT NULL); 添加数据: 1 INSERT INTO users(name, limits)

Mysql字符串函数FIND_IN_SET()的两点用法

概要:该可以查询用逗号分割的字段,以及对结果进行强制排序 首先看一张表: colid vyear area cast ,31,32,21,12 2014 1 15 ,32,33,34,35,21, 2014 2 16 ,33,34,36,39,40 2011 3 17 表中的colid字段的值是以逗号分割, 当我们需要查询这张表中,colid含有32的行, 那么可以用FIND_IN_SET() SQL如下: SELECT * FROM table WHERE FIND_IN_SET('32',

MySQL字符串函数

字符串大小写转换 MySQL 字符串大小写转化函数有两对: lower(), uppper() 和 lcase(), ucase() mysql> select lower('DDD'); +--------------+ | lower('DDD') | +--------------+ | ddd | +--------------+ mysql> select upper('ddd'); +--------------+ | upper('ddd') | +--------------+

mysql 字符串函数

对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的 最左面字符的ASCII代码值.如果str是空字符串, 返回0.如果str是NULL,返回NULL. mysql> select ASCII('2'); -> 50mysql> select ASCII(2); -> 50mysql> select ASCII('dx'); -> 100 也可参见ORD()函数. ORD(str) 如果字符串str最左面字符是一个多字节字符,通过以