根据 Table B 中列的值从 Table A 列中提取特定单词的 T-SQL 语法是什么?

What is the T-SQL syntax to extract a specific word from a column of Table A based on the value of a column in Table B?

我正在使用 SQL Server 2014,我在 Table A:

中有以下列(称为详细信息)
Details
STD RN
CPL DEL REV
DLX RN
FAS REV
CJS SUP REV
COS RN

我在 Table B:

中有一列(称为类别)
Category
STD
CPL DEL
DLX
FAS
CJS SUP
COS

我需要 运行 查询 Table A 以便我的输出如下:

Details          Category

STD RN             STD
CPL DEL REV        CPL DEL
DLX RN             DLX
FAS REV            FAS
CJS SUP REV        CJS SUP
COS RN             COS

Table A 和 Table B 之间没有 link。有没有办法编写一个查询来查找 'Details' 中的单词Table A 如果它匹配 Table B 的 'Category' 列中的单词,那么它将输出 Table B?

的值

如果这些词的顺序始终相同(没有 DEL CPLCPL REV DEL)这应该很容易:

DECLARE @Details TABLE(Detail VARCHAR(100));
INSERT INTO @Details VALUES
 ('STD RN')
,('CPL DEL REV')
,('DLX RN')
,('FAS REV')
,('CJS SUP REV')
,('COS RN');


DECLARE @Categories TABLE(Category VARCHAR(100));
INSERT INTO @Categories VALUES
 ('STD')
,('CPL DEL')
,('DLX')
,('FAS')
,('CJS SUP')
,('COS');

SELECT d.Detail
      ,c.Category
FROM @Details AS d
INNER JOIN @Categories AS c ON d.Detail LIKE c.Category + '%'

这将合并具有相同开头的(所有)类别的所有详细信息。

结果

Detail  Category
STD RN  STD
CPL DEL REV CPL DEL
DLX RN  DLX
FAS REV FAS
CJS SUP REV CJS SUP
COS RN  COS

但老实说:你真正应该做的是改变设计!