一、背景
以前系统存在的门店号以前是截取的门店名称前面4位,现业务需要门店号变更为5位,所以门店名称小于10000的需要前面补0,大于10000的就直接取门店名称前面5位。故需要核对转换前后,4位店号的截取是否正确。
二、学习点:MySQL截取字符串
1、MySQL 字符串截取函数:left(), right(), substring()
2、left(str, length):指的是截取str字符串左边length位,
比如,select left('helloworld', 5),截取的str就是hello
3、right(str, length):指的是截取str字符串右边length位
比如,select right('helloworld', 5),截取的str就是world
4、substring(str, pos):指的是从字符串str的第 pos 个字符位置开始取,直到结束,如果pos是负数,则指的是从字符串str的倒数 pos 个字符位置开始取,直到结束
比如,select substring('helloworld', 6),截取的str就是world;
select substring('helloworld', -5),截取的str就是world
5、substring(str, pos, len):指的是从字符串str的第 pos 个字符位置开始取len位,如果pos是负数,则指的是从字符串str的倒数 pos 个字符位置开始取开始取len位; len 不能取负值
比如,select substring('helloworld', 6,3),截取的str就是wor;
select substring('helloworld', -5,3),截取的str就是wor
三、实践
SELECT longStoreNo,storeno,name,RIGHT(longStoreNo,4) FROM o2o_store WHERE RIGHT(longStoreNo,4)
NOT IN(
SELECT SUBSTRING(NAME,2,4) FROM o2o_store)
-- 查询4位店号(截取门店名称前面4位的)和10位店号(尾数4位的)不一致的门店;如果不存在不一致,则代表转换成功