zapytanie SQL z użyciem []

zapytanie SQL z użyciem []
DZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
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)

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

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

Neutral
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Polanów
  • Postów: 151
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ć.

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.