SQL Server PATINDEX匹配完全字符串

时间:2013-06-20 12:26:17

标签: sql sql-server sql-server-2008 tsql patindex

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中,有XYABABCXYZ等列。现在,我只想排除XYZABC列,并使用AB保留XYPATINDEX列。我无法做到,因为只有第一列被排除在外。如果我从%删除了PATINDEX开头,那么XYZXY都将被删除。我该怎么解决这个问题呢。

1 个答案:

答案 0 :(得分: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
    );