Как предикат в T-SQL

Получите номер продукта, название и прейскурантную цену продуктов, номер продукта которых начинается с «BK-», за которым следует любой символ, кроме «R», и заканчивается знаком «-», за которым следуют любые две цифры. Вопрос принадлежит лабораторному файлу, над которым я работаю. Вот что я пробовал:

Select p.ProductNumber, p.Name,p.ListPrice,p.ProductNumber
From SalesLT.Product as p
Where p.ProductNumber Like 'BK-%[^r]%-[0-9][0-9]'

Column Name
FR-R32B-78
FR-R32R-78
HL-U703-R
HL-U703
SO-B303-M
SO-B303-L
HL-U703-B
CA-1038
LJ-0132-S
LJ-0132-M
BK-M82S-32
BK-M82S-33
BK-M82S-38
BK-R33R-62
BK-R33R-44
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проблема в том, что у вас % до [^ r]

Select p.ProductNumber, p.Name,p.ListPrice,p.ProductNumber
From SalesLT.Product as p
Where p.ProductNumber Like 'BK-[^r]%-[0-9][0-9]'

Я думаю, это должно работать нормально.

Причина в том, что% [^ r]% означает - любые символы, за которыми не следует r, за которыми следуют любые символы. Что верно для любого из них.

Пример: R33R -> R - любые символы, 3 - не r, а 3R - любые символы.

declare @t table (ProductNumber varchar(100));
insert into @t
values 

('FR-R32B-78'),
('FR-R32R-78'),
('HL-U703-R'),
('HL-U703'),
('SO-B303-M'),
('SO-B303-L'),
('HL-U703-B'),
('CA-1038'),
('LJ-0132-S'),
('LJ-0132-M'),
('BK-M82S-32'),
('BK-M82S-33'),
('BK-M82S-38'),
('BK-R33R-62'),
('BK-R33R-44')

Select *
From @t
Where ProductNumber Like 'BK-%-[0-9][0-9]' and ProductNumber not like '___R%';

Другие вопросы по теме