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 ような列があります。ここで、との列のみを除外し、との列を. 最初の列だけが除外されているため、実行できません。そして、最初から削除すると、両方の aが削除されます。どうすればこれを解決できますか。XYABABCXYZXYZABCABXYPATINDEX%PATINDEXXYZXY

4

1 に答える 1

1

PATINDEX ではなくCHARINDEXが必要です。

   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 に答える