Нужна помощь в решении задачи по 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:
- a query that returns only those InventoryCodes that don't contain digits with their Descriptions
- a query that returns only those InventoryCodes that don't contain symbols '_' with their Descriptions
Для каждого из этих запросов вы можете использовать только один оператор LIKE:
- запрос, который возвращает только те InventoryCodes, которые не содержат цифр с их описаниями
- запрос, который возвращает только те 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 '~';