zapytanie SQL z użyciem []

0

Chciałam zastąpić wyrażenie:
select distinct city
from Person.Address
where City LIKE '%ring[td]%'

wyrażeniem:
select distinct city
from Person.Address
where city LIKE '%[ringt]%' or city LIKE '%[ringd]%'

ale wychodzą mi kompletnie różne wyniki. Gdzie popełniam błąd (korzystam z bazy treningowej Adventureworks)

1

LIKE '%ringt%' or city LIKE '%ringd%'?

1

Musisz poczytać o regex, ale myślę że operator LIKE nie jest oparty o te wyrażenia.

Edit: Pozwoliłem sobie zedytować ten post i dopisać dwa słowa, które pogrubiłem.

https://dev.mysql.com/doc/refman/8.0/en/pattern-matching.html

Wszystko między "[", a "]" jest traktowane jako klasa znaków, czyli minimum jeden znak z tej klasy musi zostać dopasowany.

LIKE '%ring[td]%' dopasuje takie ciągi jak:
xxxringt, xxxringd, uaringd, osdfringtsss, a44ringt0093

Natomiast LIKE '%[ringt]%' or city LIKE '%[ringd]%', takie:
xxxrddd, wweenwweew, tttguuu

Zastosuj REGEXP_LIKE, chyba że da się to na samym LIKE napisać.

select * from actors where REGEXP_LIKE (name, '.*ring(t|d).*');

1 użytkowników online, w tym zalogowanych: 0, gości: 1