MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak obcinać tekst za pomocą wielokropka w MariaDB

Czasami może się okazać, że ilość tekstu zwróconego w kolumnie bazy danych jest zbyt długa. Możesz po prostu zwrócić krótki fragment tego tekstu, po którym następuje wielokropek lub trzy kropki.

Na szczęście jest to stosunkowo łatwe w MariaDB.

Trzy okresy

Oto przykład dołączania trzech kropek (zamiast znaku wielokropka) do kolumny, gdy liczba znaków w tej kolumnie przekracza określoną długość:

SELECT 
    IF(CHAR_LENGTH(ProductDescription) > 32, 
        CONCAT(LEFT(ProductDescription, 32),"..."), 
        ProductDescription) AS "Short Desc",
    ProductDescription AS "Full Desc"
FROM Products;

Wynik:

+-------------------------------------+-----------------------------------------+
| Short Desc                          | Full Desc                               |
+-------------------------------------+-----------------------------------------+
| Purple. Includes left handed car... | Purple. Includes left handed carry box. |
| Blue. Includes right handed carr... | Blue. Includes right handed carry box.  |
| Approximate 45 minute waiting pe... | Approximate 45 minute waiting period.   |
| Approximate 30 minute waiting pe... | Approximate 30 minute waiting period.   |
| Wooden handle. Free wine glasses... | Wooden handle. Free wine glasses.       |
| Orange. Includes spare fingers.     | Orange. Includes spare fingers.         |
| Tied with vines. Very chewable.     | Tied with vines. Very chewable.         |
| Brown ceramic with solid handle.    | Brown ceramic with solid handle.        |
+-------------------------------------+-----------------------------------------+

W tym przypadku używamy CHAR_LENGTH() funkcja wewnątrz IF() funkcja określająca, czy ciąg jest wystarczająco długi, aby uzasadnić jego skrócenie. Następnie używamy LEFT() funkcja wewnątrz CONCAT() funkcja dodawania kilku kropek do krótkiego opisu.

Korzystanie z rzeczywistego znaku wielokropka

I znowu, ale z prawdziwym wielokropkiem zamiast trzech kropek:

SELECT 
    IF(CHAR_LENGTH(ProductDescription) > 32, 
        CONCAT(LEFT(ProductDescription, 32),"…"), 
        ProductDescription) AS "Short Desc",
    ProductDescription AS "Full Desc"
FROM Products;

Wynik:

+-------------------------------------+-----------------------------------------+
| Short Desc                          | Full Desc                               |
+-------------------------------------+-----------------------------------------+
| Purple. Includes left handed car…   | Purple. Includes left handed carry box. |
| Blue. Includes right handed carr…   | Blue. Includes right handed carry box.  |
| Approximate 45 minute waiting pe…   | Approximate 45 minute waiting period.   |
| Approximate 30 minute waiting pe…   | Approximate 30 minute waiting period.   |
| Wooden handle. Free wine glasses…   | Wooden handle. Free wine glasses.       |
| Orange. Includes spare fingers.     | Orange. Includes spare fingers.         |
| Tied with vines. Very chewable.     | Tied with vines. Very chewable.         |
| Brown ceramic with solid handle.    | Brown ceramic with solid handle.        |
+-------------------------------------+-----------------------------------------+

Wielokropek zajmuje mniej miejsca. Dzieje się tak, ponieważ jest to pojedynczy znak, w przeciwieństwie do trzech kropek (które są trzema oddzielnymi znakami).

Obetnij WSZYSTKIE rzędy, niezależnie od długości

Jeśli chcesz skrócić wszystkie wiersze, niezależnie od ich długości, nie musisz uwzględniać IF() funkcja.

W takim przypadku kod można skrócić do czegoś takiego:

SELECT 
    CONCAT(LEFT(ProductDescription, 15), '...') AS "Short Desc",
    ProductDescription AS "Full Desc"
FROM Products;

Wynik:

+--------------------+-----------------------------------------+
| Short Desc         | Full Desc                               |
+--------------------+-----------------------------------------+
| Purple. Include... | Purple. Includes left handed carry box. |
| Blue. Includes ... | Blue. Includes right handed carry box.  |
| Approximate 45 ... | Approximate 45 minute waiting period.   |
| Approximate 30 ... | Approximate 30 minute waiting period.   |
| Wooden handle. ... | Wooden handle. Free wine glasses.       |
| Orange. Include... | Orange. Includes spare fingers.         |
| Tied with vines... | Tied with vines. Very chewable.         |
| Brown ceramic w... | Brown ceramic with solid handle.        |
+--------------------+-----------------------------------------+

Pomiń wielokropek

A jeśli nie potrzebujesz nawet wielokropka/trzech kropek, możesz go jeszcze bardziej skrócić, do czegoś takiego:

SELECT 
    LEFT(ProductDescription, 15) AS "Short Desc",
    ProductDescription AS "Full Desc"
FROM Products;

Wynik:

+-----------------+-----------------------------------------+
| Short Desc      | Full Desc                               |
+-----------------+-----------------------------------------+
| Purple. Include | Purple. Includes left handed carry box. |
| Blue. Includes  | Blue. Includes right handed carry box.  |
| Approximate 45  | Approximate 45 minute waiting period.   |
| Approximate 30  | Approximate 30 minute waiting period.   |
| Wooden handle.  | Wooden handle. Free wine glasses.       |
| Orange. Include | Orange. Includes spare fingers.         |
| Tied with vines | Tied with vines. Very chewable.         |
| Brown ceramic w | Brown ceramic with solid handle.        |
+-----------------+-----------------------------------------+

  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 NOT REGEXP działa w MariaDB

  2. Jak CAST() działa w MariaDB

  3. Jak zarządzać MariaDB 10.3 za pomocą ClusterControl

  4. Jak działa ASIN() w MariaDB

  5. MariaDB JSON_COMPACT() Objaśnienie