Нужна помощь в решении задачи по SQL (с применением оператора LIKE)

Данные для задания:

create table Inventory
(ID int identity (1,1) not null primary key,
 InventoryCode varchar (10) not null,
 [Description] varchar (200) not null);
 
 INSERT INTO Inventory
 (InventoryCode,[Description])
 VALUES 
 ('IN_345678','office radiotelephone'),
 ('IN_34578','office table'),
 ('INARMCHAIR','office armchair'),
 ('INPHONE','office phone'),
 ('IN34578','office chair'),
 ('IN_34578','notebook'),
 ('IN_34578','display')

Что необходимо найти:

For each of those queries you can use only one operator LIKE:

  1. a query that returns only those InventoryCodes that don't contain digits with their Descriptions
  2. a query that returns only those InventoryCodes that don't contain symbols '_' with their Descriptions

Для каждого из этих запросов вы можете использовать только один оператор LIKE:

  1. запрос, который возвращает только те InventoryCodes, которые не содержат цифр с их описаниями
  2. запрос, который возвращает только те InventoryCodes, которые не содержат символов '_' с их описаниями.

Мой ответ был такой:

SELECT InventoryCode
FROM Inventory
WHERE InventoryCode NOT LIKE '%[^A-z]%';

SELECT InventoryCode
FROM Inventory
WHERE InventoryCode NOT LIKE 'IN\_%' ESCAPE '\';

Но они были оценены как неверные. Подскажите пожалуйста где моя ошибка?


Ответы (1 шт):

Автор решения: Denis Rubashkin

Первое задание требует исключить цифры, авторы же исключает все не буквы, в том числе и знак подчеркивания, который явно присутствует в примерах. А нужно исключить только цифры:

SELECT InventoryCode, Descriptions
FROM Inventory
WHERE InventoryCode NOT LIKE '%[0123456789]%';

Второе задание требует исключить подчеркивание, а не коды, начинающиеся с IN_.

SELECT InventoryCode, Descriptions
FROM Inventory
WHERE InventoryCode NOT LIKE '%~_%' ESCAPE '~';
→ Ссылка