SQL 语句 - 使用 CONCAT 和 SUBSTR 进行简单文本格式化



我正在使用这个软件来管理我的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

预期结果: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

最新更新