在未格式化的列上加入一组名称

时间:2014-01-13 08:08:00

标签: sql sql-server sql-server-2008

我不知道该怎么做,但基本上我有一套名字

'USDE', 'USTX', 'USPA', 'SEMA' ... 'SEPO'

这组名称在特定的表中不存在,但是它给我的名字集

我需要在具有相同名称的表上对这些进行连接,但是它们可能具有前导或尾随或两者的附加文本。

'S1\USDE', 'S1\USTX\admin', 'USPA\localadmon'

那么如何在第一个列表中找到第二个列表中存在名称的每个用户?

我正在运行SQL Server 2008

1 个答案:

答案 0 :(得分:1)

您可以使用JOIN在表之间执行LIKE,这是一个有效的示例:

CREATE TABLE #nameSet (namePart varchar(100));
CREATE TABLE #data (name varchar(100));

INSERT INTO #nameSet VALUES('USDE');
INSERT INTO #nameSet VALUES('USTX');
INSERT INTO #nameSet VALUES('USPA');
INSERT INTO #nameSet VALUES('SEMA');
INSERT INTO #nameSet VALUES('SEPO');

INSERT INTO #data VALUES('S1\USDE');
INSERT INTO #data VALUES('S1\USTX\admin');
INSERT INTO #data VALUES('USPA\localadmon');
INSERT INTO #data VALUES('S1\XXXX\admin');

SELECT
    * 
FROM 
    #data AS s
    INNER JOIN #nameSet AS n ON s.name LIKE '%' + n.namePart + '%';