我正在使用这个软件来管理我的Magento商店https://www.mag-manager.com
它有一个特性,通过使用SQL表达式来批量编辑产品字段,如下所述:http://store-manager-for-magento-documentation.emagicone.com/products-management/import-products/expression-editor
我不知道SQL表达式,但我得到我的头周围围绕他们重新格式化我的SKU号码。这就是我想要实现的场景:
场景1att_ean = 123456
config_grade = A级
config_operator = Vodafone
预期结果:123456 gavod
场景2
att_ean = 123456
config_grade = Brand New 0KM
config_operator = Vodafone Spain
预期结果:123456 bn0vods
解释:
我想使用整个att_ean字符串。我想使用config_grade中每个单词的第一个字符(不管有多少个单词)我想使用config_grade中第一个单词的前3个字符和后续单词的第一个字符(如果有的话)我希望所有字符都是大写
这是我目前得到的:
CONCAT( [ATTRIBUTE(att_ean)],
substr([ATTRIBUTE(config_grade)], 1, 1),
substr([ATTRIBUTE(config_operator)], 1, 3),
'' )
这是场景1的结果:123456GVod
这是场景2的结果:123456BVod
这使用了各种SQL函数;CONCAT
, SUBSTRING
, CHARINDEX
&UPPER
CONCAT([att_ean],
SUBSTRING([config_grade], 1, 1) + SUBSTRING([config_grade], CHARINDEX(' ', [config_grade]) + 1, 1) +
CASE WHEN 0 != CHARINDEX(' ', [config_grade], CHARINDEX(' ', [config_grade]) + 1)
THEN SUBSTRING([config_grade], CHARINDEX(' ', [config_grade], CHARINDEX(' ', [config_grade]) + 1) + 1, 1)
ELSE ''
END,
UPPER(SUBSTRING([config_operator], 1, 3) + SUBSTRING([config_operator], CHARINDEX(' ', [config_operator]) + 1, 1) +
CASE WHEN 0 != CHARINDEX(' ', [config_operator], CHARINDEX(' ', [config_operator]) + 1)
THEN SUBSTRING([config_operator], CHARINDEX(' ', [config_operator], CHARINDEX(' ', [config_operator]) + 1) + 1, 1)
ELSE ''
END))
输出:att_ean config_grade config_operator newstring
123456 Grade A Vodafone 123456GAVODV
123456 Brand New 0KM Vodafone Spain 123456BN0VODS
SQL Fiddle: http://sqlfiddle.com/#!3/6a3b1/6/0