PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

4 sposoby na znalezienie wierszy zawierających wielkie litery w PostgreSQL

Oto cztery opcje zwracania wierszy zawierających duże litery w PostgreSQL.

Przykładowe dane

Załóżmy, że mamy tabelę z następującymi danymi:

SELECT c1 FROM t1;

Wynik:

       c1       
----------------
 CAFÉ
 Café
 café
 1café
 eCafé
 James Bond 007
 JB 007
 007
 null
 
 É
 É 123
 é
 é 123
 ø
 Ø

Możemy użyć następujących metod, aby zwrócić wiersze zawierające duże litery.

Opcja 1:Porównaj z klasą znaków POSIX

Możemy użyć ~ operatora, aby wykonać dopasowanie z rozróżnianiem wielkości liter we wzorcu wyrażenia regularnego. Wzór może być tak prosty lub złożony, jak nam się podoba.

Prostą opcją jest porównanie naszej kolumny z [:upper:] Klasa znaków POSIX:

SELECT c1 FROM t1
WHERE c1 ~ '[[:upper:]]';

Wynik:

       c1       
----------------
 CAFÉ
 Café
 eCafé
 James Bond 007
 JB 007
 É
 É 123
 Ø

Opcja 2:Porównaj z LOWER() Ciąg

Inną opcją jest użycie LOWER() funkcja do porównania oryginalnej wartości z jej odpowiednikiem małymi literami:

SELECT c1 FROM t1
WHERE LOWER(c1) <> c1;

Wynik:

       c1       
----------------
 CAFÉ
 Café
 eCafé
 James Bond 007
 JB 007
 É
 É 123
 Ø

Używając nie równego (<> ) operator (możesz alternatywnie użyć != zamiast <> jeśli wolisz), zwracamy tylko te wiersze, które różnią się od ich odpowiedników pisanych małymi literami. Powodem, dla którego to robimy, jest to, że jeśli wartość jest taka sama jak jej odpowiednik małymi literami, to na początku była już mała (i nie chcemy jej zwracać).

Domyślnie PostgreSQL przeprowadza dopasowanie z uwzględnieniem wielkości liter, więc nie musimy określać sortowania z uwzględnieniem wielkości liter, aby uzyskać pożądany wynik.

Opcja 3:Porównaj z rzeczywistymi znakami

Inną opcją jest użycie ~ operator ze wzorcem wyrażenia regularnego, który jawnie zawiera każdy znak wielkiej litery, który chcemy dopasować:

SELECT c1 FROM t1
WHERE c1 ~ '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]';

Wynik:

       c1       
----------------
 CAFÉ
 Café
 eCafé
 James Bond 007
 JB 007

W takim przypadku zwracanych jest mniej wierszy niż w poprzednich przykładach. Dzieje się tak, ponieważ nie określiłem znaków takich jak É i Ø , które zostały zwrócone w tych przykładach. Nasz wynik zawiera É ale ten wiersz został zwrócony tylko dlatego, że zawiera również inne wielkie litery, które wykonaj dopasuj.

Dlatego ta opcja jest bardziej ograniczona niż poprzednia, ale zapewnia większą kontrolę nad postaciami, które chcesz dopasować.

Opcja 4:Porównaj z zakresem znaków

Możemy alternatywnie określić zakres znaków, które chcemy dopasować:

SELECT c1 FROM t1
WHERE c1 ~ '[A-Z]';

Wynik:

       c1       
----------------
 CAFÉ
 Café
 eCafé
 James Bond 007
 JB 007

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zachować dane w zadokowanej bazie danych postgres przy użyciu woluminów?

  2. Co zrobić z wartościami null podczas modelowania i normalizacji?

  3. Zapisz dane wyjściowe z funkcji sql do pliku csv (KOPIUJ) z dynamiczną nazwą pliku

  4. Kopiowanie bazy danych PostgreSQL na inny serwer

  5. Zamień znaki Unicode w PostgreSQL