TSQL查询结果替换需求:将6个缩写转换为对应全称
TSQL查询结果替换缩写为全称的解决方法
方法1:嵌套REPLACE函数批量替换
如果要替换的缩写不多(比如你提到的6个),直接用嵌套REPLACE就能快速实现,不用额外建表。假设你要替换的字段是abbr_column,示例代码如下:
SELECT REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(abbr_column, 'em', 'employee'), 'dpt', 'department'), 'mgr', 'manager'), 'hr', 'human_resources'), 'fin', 'finance'), 'it', 'information_technology') AS full_name FROM your_table;
每多一个缩写替换,就在外层多套一层REPLACE,顺序不影响,只要确保缩写和全称对应正确即可。
方法2:正确使用CASE WHEN语句
你之前用CASE没生效,大概率是写法不对。正确的CASE要针对字段值做精准匹配,示例代码:
SELECT CASE abbr_column WHEN 'em' THEN 'employee' WHEN 'dpt' THEN 'department' WHEN 'mgr' THEN 'manager' WHEN 'hr' THEN 'human_resources' WHEN 'fin' THEN 'finance' WHEN 'it' THEN 'information_technology' ELSE abbr_column -- 保留未匹配到的原始值,避免空值 END AS full_name FROM your_table;
如果字段里的缩写有大小写差异(比如'EM'、'Em'),可以统一转成大写或小写再判断:
SELECT CASE UPPER(abbr_column) WHEN 'EM' THEN 'employee' WHEN 'DPT' THEN 'department' -- 其他缩写同理 ELSE abbr_column END AS full_name FROM your_table;
进阶:用自定义映射表维护缩写(适合后续可能新增缩写的场景)
如果以后还要加更多缩写,建个映射表更方便维护:
-- 先建映射表 CREATE TABLE abbr_mapping ( abbr VARCHAR(10) PRIMARY KEY, full_name VARCHAR(50) NOT NULL ); -- 插入6个缩写的映射关系 INSERT INTO abbr_mapping VALUES ('em', 'employee'), ('dpt', 'department'), ('mgr', 'manager'), ('hr', 'human_resources'), ('fin', 'finance'), ('it', 'information_technology'); -- 查询时关联映射表 SELECT COALESCE(m.full_name, t.abbr_column) AS full_name FROM your_table t LEFT JOIN abbr_mapping m ON t.abbr_column = m.abbr;
这样后续新增缩写,只要往映射表里插数据就行,不用改查询语句。
内容的提问来源于stack exchange,提问作者user21095720
相关产品推荐
相关产品推荐

