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
. Теперь я хочу исключить только столбцы XYZ
и ABC
и хранить столбцы AB
и XY
, используя PATINDEX
. Я не могу это сделать, потому что исключается только первый столбец. И если я удаляю начало %
от PATINDEX
, то оба XYZ
a XY
удаляются. Как я могу это решить.SQL PATINDEX сервер, чтобы соответствовать точной строке
Что я хочу знать, так это то, что следует поместить имена столбцов с помощью разделителя ';' или есть лучший способ? Также ваш запрос выбирает как «XY», так и «XYZ», что не является желаемым поведением. –
См. Обновленный ответ для решения XY и XYZ selection - added ';' terminator для поиска строк. Неважно, что такое разделитель, поскольку вы ищете вхождения строк. – kgu87