近日处理shopex商品时用到的一些SQL语句
一、shopex 编号/货号批量修改
编号 字段是 `sdb_goods` 表的`bn`
货号 字段是 `sdb_products` 表的`bn`
读取指定格式货号的商品,如:
替换其中某个固定格式:
重新组合:
重新组合,以商品名称的某些字符代替:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
读取2位数序号
模拟删除:
分两步删除货号末尾的序号:
1)删除带2位数字的序号
2)删除带1位数字的序号
一、shopex 编号/货号批量修改
编号 字段是 `sdb_goods` 表的`bn`
货号 字段是 `sdb_products` 表的`bn`
操作时只需将表名更改就可。
读取指定格式货号的商品,如:
select * from `sdb_products` where bn like 'S%'
替换其中某个固定格式:
update `sdb_products` set bn=replace(bn,'S', 'T') where bn like 'S%'
重新组合:
update `sdb_products` set bn=CONCAT("4TB001/", bn) where bn like 'S%'
重新组合,以商品名称的某些字符代替:
update `sdb_products` set bn=CONCAT("4TB001/",substring(name,POSITION("S" in name),length(name)-POSITION("S" in name))) where bn like 'S%'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二、货号末尾的序号处理
为使货号唯一化,shopex系统会自动对货号末尾加上序号,如商品编号为:“4TB001/SG9372”,添加多规格后,货号将自动生成为:“4TB001/SG9372-1”、“4TB001/SG9372-2”、“4TB001/SG9372-3”。。。以此类推。
测试读取带序号的商品:
读取1位数序号select * from `sdb_products` where bn like '%-_'
读取2位数序号
select * from `sdb_products` where bn like '%-__'
模拟删除:
select bn, if(LOCATE("-",bn,locate("-",bn)+1)=0,LOCATE("-",bn),LOCATE("-",bn,locate("-",bn)+1)) as pos, substring(bn,1,if(LOCATE("-",bn,locate("-",bn)+1)=0,LOCATE("-",bn),LOCATE("-",bn,locate("-",bn)+1))-1) as newbn from `sdb_products` where bn like '%-_'
分两步删除货号末尾的序号:
1)删除带2位数字的序号
update `sdb_products` set bn=substring(bn,1,if(LOCATE("-",bn,locate("-",bn)+1)=0,LOCATE("-",bn),LOCATE("-",bn,locate("-",bn)+1))-1) where bn like '%-__'
2)删除带1位数字的序号
update `sdb_products` set bn=substring(bn,1,if(LOCATE("-",bn,locate("-",bn)+1)=0,LOCATE("-",bn),LOCATE("-",bn,locate("-",bn)+1))-1) where bn like '%-_'