如何在SQL中替换字符串的多个单词
是否可以在不使用多个替换函数的情况下替换 sql 中字符串中的多个单词?
例如,我有一个字符串,我需要将单词 'POLYESTER' 替换为 'POLY' ,将 'COTTON' 替换为 'CTN',将 'GRAPHIC' 替换为 'GRPHC' 等,以保持字符串长度不超过 30大大失去了其中内容的可读性(不能使用子字符串来限制字符,因为它可以完全修剪字符串的结尾有意义的部分)。所以我们决定缩短一些像上面这样的关键词。
我使用的当前查询:
SELECT
REPLACE(REPLACE('**Some string value **COTTON **Some string value ** POLYESTER', 'POLYESTER', 'POLY'), 'COTTON', 'CTN')
如果我有 10 个这样的关键字,那么除了使用多个替换功能之外,实现结果的最佳方法是什么。我正在使用 SQL Server 2012。
回答
考虑到 sql server 是您唯一的工具(不是 ac# 或其他应用程序),作为一种解决方法;使用临时表或持久表来存储替换选项。
IF OBJECT_ID('tempdb..#tmp') IS NOT NULL
DROP TABLE #tmp
CREATE TABLE #tmp (
fromText VARCHAR(16),
toText VARCHAR(16)
);
INSERT INTO #tmp (fromText, toText)
VALUES
('POLYESTER', 'POLY'),
('COTTON', 'CTN'),
('GRAPHIC', 'GRPHC')
DECLARE @someValue AS NVARCHAR(MAX) =
'**Some string value **COTTON **Some string value ** POLYESTER';
SELECT @someValue = REPLACE(@someValue, fromText, toText) FROM #tmp;
PRINT @someValue
结果是:**某些字符串值 **CTN **某些字符串值 ** POLY。