Files
backend_v2/scripts/sql/002_i18n_columns.sql
toom1996 30c9f21da4 update
2026-08-26 10:45:21 +08:00

50 lines
2.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================================
-- 002_i18n_columns.sql
-- 方案 A(独立列):把品牌名 / 走秀标题 / 描述 拆分为 en / cn 两列。
--
-- 设计前提(已用探查脚本核对线上数据):
-- * brand.name 多为拉丁名,但 266 个含中文;show_name 形如 "拉丁/中文"(2025 个含中文)。
-- * brand_runway.title / description 校验过 han=0,当前全为英文。
-- * 排序 / A-Z 索引 / 关键词搜索 统一基于 name_en(拉丁),中文品牌(name_en 为空)归入 OTHER 桶。
--
-- 回填策略:
-- name_en = name 去掉中文后的部分;若 name 全中文则取 show_name 斜杠前部分。
-- name_cn = show_name 斜杠后含中文的部分;否则 show_name 本身(含中文);否则 name(含中文)。
-- title_en / description_en = 原 title / description;title_cn / description_cn = ''(当前无中文)。
--
-- 旧列 name / show_name / title / description 保留不删,作为回退与对比;
-- 代码全部改用 *_en / *_cn 后,可择机在后续迁移中 DROP。
-- ============================================================================
ALTER TABLE brand
ADD COLUMN name_en VARCHAR(255) NOT NULL DEFAULT '' AFTER name,
ADD COLUMN name_cn VARCHAR(255) NOT NULL DEFAULT '' AFTER name_en;
ALTER TABLE brand_runway
ADD COLUMN title_en VARCHAR(255) NOT NULL DEFAULT '' AFTER title,
ADD COLUMN title_cn VARCHAR(255) NOT NULL DEFAULT '' AFTER title_en,
ADD COLUMN description_en VARCHAR(1024) NOT NULL DEFAULT '' AFTER description,
ADD COLUMN description_cn VARCHAR(1024) NOT NULL DEFAULT '' AFTER description_en;
-- 回填品牌名:拆拉丁 / 中文
UPDATE brand SET
name_en = CASE
WHEN TRIM(REGEXP_REPLACE(name, '[一-鿿]', '')) <> '' THEN TRIM(REGEXP_REPLACE(name, '[一-鿿]', ''))
WHEN show_name LIKE '%/%' THEN TRIM(SUBSTRING_INDEX(show_name, '/', 1))
ELSE ''
END,
name_cn = CASE
WHEN show_name LIKE '%/%' AND SUBSTRING_INDEX(show_name, '/', -1) REGEXP '[一-鿿]'
THEN TRIM(SUBSTRING_INDEX(show_name, '/', -1))
WHEN show_name REGEXP '[一-鿿]' THEN TRIM(show_name)
WHEN name REGEXP '[一-鿿]' THEN TRIM(name)
ELSE ''
END;
-- 回填走秀:当前 title / description 全为英文,直接进 *_en
UPDATE brand_runway SET
title_en = title,
description_en = description,
title_cn = '',
description_cn = '';