如何在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。


以上是如何在SQL中替换字符串的多个单词的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>