0
SELECT * FROM SYS.COLUMNS WHERE
NAME NOT IN (SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'XXXX'
AND PATINDEX('%' + COLUMN_NAME + '%', 'ABC;XYZ') <> 0);

在表XXXX 中有列,如XY, AB, ABC, XYZ。现在我只想排除XYZandABC列并保留ABandXY列使用PATINDEX. 我不能这样做,因为只有第一列被排除在外。如果我从中删除开头%PATINDEX则两个XYZaXY都将被删除。我该如何解决这个问题。

4

1 回答 1

1

你想要CHARINDEX,而不是 PATINDEX。

   SELECT * FROM SYS.COLUMNS 
    WHERE NAME NOT IN (
      SELECT COLUMN_NAME
      FROM INFORMATION_SCHEMA.COLUMNS
      WHERE TABLE_NAME = 'XXXX'
      AND CHARINDEX(COLUMN_NAME + ';', 'ABC;XYZ;') > 0
    );
于 2013-06-20T16:40:59.900 回答