Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co to jest CHAR_LENGTH() w MySQL?

W MySQL funkcja CHAR_LENGTH() funkcja zwraca długość ciągu mierzoną w znakach. MySQL ma również CHARACTER_LENGTH() , który jest synonimem CHAR_LENGTH() .

Oto przykład:

SELECT CHAR_LENGTH('Lit');

A oto wynik:

+--------------------+
| CHAR_LENGTH('Lit') |
+--------------------+
|                  3 |
+--------------------+

Puste końcowe

Zauważ, że CHAR_LENGTH() uwzględnia w swoich obliczeniach końcowe spacje (np. spacje na końcu ciągu).

Więc jeśli dodamy spację na końcu poprzedniego przykładu:

SELECT CHAR_LENGTH('Lit ');

Oto wynik:

+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
|                   4 |
+---------------------+

Ale zawsze możemy usunąć tę końcową spację, dodając TRIM() funkcja w miksie:

SELECT CHAR_LENGTH(TRIM('Lit '));

Oto wynik:

+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
|                         3 |
+---------------------------+

Białe puste miejsca

Tak samo jest z wiodącymi blankami. Jeśli więc dodamy spację do początku zamiast tego ciągu:

SELECT CHAR_LENGTH(' Lit');

Otrzymujemy ten sam wynik:

+---------------------+
| CHAR_LENGTH(' Lit') |
+---------------------+
|                   4 |
+---------------------+

Typy danych

Nie ma znaczenia, jaki typ danych jest przechowywany w ciągu, nadal zwróci te same wyniki. Jest to w przeciwieństwie do LENGTH() funkcja, która zwróci podwójną liczbę znaków w przypadkach, gdy dane są przechowywane jako ciąg Unicode.

W poniższym przykładzie kolumna ArtistName używa varchar(255) :

SELECT CHAR_LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Oto wynik:

+-------------------------+
| CHAR_LENGTH(ArtistName) |
+-------------------------+
|                       3 |
+-------------------------+

A jeśli zmodyfikujemy ArtistName kolumna do używania Unicode:

ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) unicode;

I ponownie uruchom to samo zapytanie:

SELECT CHAR_LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Nadal otrzymujemy ten sam wynik:

+-------------------------+
| CHAR_LENGTH(ArtistName) |
+-------------------------+
|                       3 |
+-------------------------+

Jednakże, gdybyśmy użyli LENGTH() funkcja, wynik byłby 6. Dzieje się tak, ponieważ ciągi Unicode przechowują 2 bajty na znak, a LENGTH() funkcja zwraca długość mierzoną w bajtach.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zainstaluj wiele instancji MySQL na serwerze Linux — użyj osobnego pliku konfiguracyjnego MySQL

  2. Jak używać klauzuli WITH w MySQL?

  3. Używanie SqlDataAdapter do wstawiania wiersza

  4. Używanie pliku .php do generowania zrzutu MySQL

  5. Jak wyświetlić sortowanie kolumny w MySQL