SQL语句 - 简单的文本格式与CONCAT& SUBSTR

时间:2015-06-03 12:05:41

标签: sql magento expression statements

我正在使用这个软件来管理我的Magento商店https://www.mag-manager.com

它具有使用SQL表达式批量编辑产品字段的功能,如下所述:http://store-manager-for-magento-documentation.emagicone.com/products-management/import-products/expression-editor

我不知道SQL表达式,但我正在围绕它们重新格式化我的SKU数字。这是场景和我想要实现的目标:

情景1

att_ean = 123456

config_grade = A级

config_operator = Vodafone

预期结果:123456GAVOD

场景2

att_ean = 123456

config_grade =全新的0KM

config_operator = Vodafone Spain

预期结果:123456BN0VODS

说明:

我想使用整个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

1 个答案:

答案 0 :(得分:0)

这使用各种SQL函数; CONCATSUBSTRINGCHARINDEX& UPPER

CODE:

       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小提琴:http://sqlfiddle.com/#!3/6a3b1/6/0