0
這裏是具有父SKU的輸入表,即BOO3
及其子SKUS BOO3L,BOO3S,BOO3M
。這是我的代碼到目前爲止,我卡在這裏。根據需要在SQL Server中分割字符串
的categories
和url-key
欄應該改變像預期的結果。 url-key
列應該是小寫,用-
分隔。
我所要的輸出是這樣的:
這裏是具有父SKU的輸入表,即BOO3
及其子SKUS BOO3L,BOO3S,BOO3M
。這是我的代碼到目前爲止,我卡在這裏。根據需要在SQL Server中分割字符串
的categories
和url-key
欄應該改變像預期的結果。 url-key
列應該是小寫,用-
分隔。
我所要的輸出是這樣的:
看起來你需要的一對夫婦的SQL Server的功能。
先用數據的測試表,你給:
CREATE TABLE [TestTable]
([sku] VARCHAR(10), [product_type] VARCHAR(50), [categories] VARCHAR(100),
[name] VARCHAR(255), [url_key] VARCHAR(255));
INSERT INTO [TestTable]
VALUES
('B003', 'configurable', 'Men''s PJs → Comical Boxers', 'Wanna Moose Around Comical Boxer', NULL),
('B003L', 'simple', 'Men''s PJs → Comical Boxers', 'Wanna Moose Around Comical Boxer', NULL),
('B003M', 'simple', 'Men''s PJs → Comical Boxers', 'Wanna Moose Around Comical Boxer', NULL),
('B003S', 'simple', 'Men''s PJs → Comical Boxers', 'Wanna Moose Around Comical Boxer', NULL);
SELECT * FROM [TestTable];
對於類別,你需要一個CHARINDEX()或PATINDEX()剪出「→」(ALT + 26顯然,我不得不看它)。
該URL的將需要LOWER()擺脫Title Case和REPLACE()將空格更改爲連字符。
最後,您的'小,中,大'需要混合RIGHT()來檢查它是什麼和CASE添加到相關的後綴。
SELECT
[sku]
, [categories] = SUBSTRING([categories], CHARINDEX('→', [categories]) + 1, 1000)
, [name]
, [url-key] = CASE
WHEN RIGHT([sku], 1) = 'L' THEN REPLACE(LOWER([name]), ' ', '-') + '-large'
WHEN RIGHT([sku], 1) = 'M' THEN REPLACE(LOWER([name]), ' ', '-') + '-medium'
WHEN RIGHT([sku], 1) = 'S' THEN REPLACE(LOWER([name]), ' ', '-') + '-small'
ELSE REPLACE(LOWER([name]), ' ', '-')
END
FROM [TestTable]
ORDER BY (CASE
WHEN RIGHT([sku], 1) = 'L' THEN 4
WHEN RIGHT([sku], 1) = 'M' THEN 3
WHEN RIGHT([sku], 1) = 'S' THEN 2
ELSE 1
END) DESC
DROP TABLE [TestTable];
最後另一個CASE語句,以獲得正確的ORDER BY
因爲,據我所知,沒有訂購這就是你想要的方式自然的方式。
謝謝你這麼多@Shaneis ..我感謝你的幫助:) –