🧚 Άκου! Το Beekeeper Studio είναι ένα γρήγορο, σύγχρονο και open source GUI για βάσεις δεδομένων Λήψη
4 Μαΐου 2026 Από τον Matthew Rathbone

Η SUBSTRING επιστρέφει ένα τμήμα ενός string, ξεκινώντας από τη θέση που της δίνεις και για όσους χαρακτήρες ζητήσεις. Έτσι η SQL βγάζει ένα πρόθεμα, έναν κωδικό ή το domain ενός email από μια στήλη κειμένου. Τα παραδείγματα δουλεύουν σε PostgreSQL, MySQL, SQLite και SQL Server.

Πώς χρησιμοποιείς τη SUBSTRING

Δώσε στη SUBSTRING ένα string, τη θέση από την οποία θα ξεκινήσει (ο πρώτος χαρακτήρας είναι το 1) και πόσους χαρακτήρες θα πάρει. Αν παραλείψεις το μήκος, παίρνει τα πάντα μέχρι το τέλος:

SUBSTRING(string, start, length)
SELECT SUBSTRING('Joe Bloggs', 1, 3);
-- Output: Joe

-- No length: the rest of the string (SQL Server needs all three arguments)
SELECT SUBSTRING('Joe Bloggs', 5);
-- Output: Bloggs

Σε ένα πραγματικό query το string είναι συνήθως μια στήλη. Αριθμοί παραγγελιών όπως ORD-2024-001 έχουν το έτος στους χαρακτήρες 5 έως 8:

-- Input: orders
-- order_number
-- ------------
-- ORD-2024-001
-- ORD-2025-014
-- ORD-2026-102

SELECT order_number, SUBSTRING(order_number, 5, 4) AS year
FROM orders;

-- Output:
-- order_number | year
-- -------------+-----
-- ORD-2024-001 | 2024
-- ORD-2025-014 | 2025
-- ORD-2026-102 | 2026

Κανόνες που πρέπει να ξέρεις

  • Οι θέσεις ξεκινούν από το 1, όχι από το 0. Μια αρνητική αρχή μετράει προς τα πίσω από το τέλος του string, αλλά μόνο σε MySQL και SQLite:
SELECT SUBSTRING('Joe Bloggs', -6, 6);
-- Output: Bloggs
-- PostgreSQL and SQL Server return '' (an empty string) instead
  • Αν ξεπεράσεις το τέλος, δεν βγαίνει σφάλμα. Παίρνεις τους χαρακτήρες που υπάρχουν ή ένα κενό string όταν η αρχή είναι μετά το τέλος:
SELECT SUBSTRING('Bob', 1, 10);
-- Output: Bob

SELECT SUBSTRING('Hello', 10, 5);
-- Output: '' (an empty string)
  • NULL μπαίνει, NULL βγαίνει. Τύλιξε την κλήση σε COALESCE όταν χρειάζεσαι μια τιμή:
SELECT SUBSTRING(NULL, 1, 5);
-- Output: NULL
-- SQL Server rejects a bare NULL here, but a NULL column gives NULL
  • Φίλτραρε με πρόθεμα μέσω LIKE, όχι SUBSTRING. Το WHERE SUBSTRING(product_code, 1, 3) = 'ELE' επιστρέφει τις ίδιες γραμμές με το WHERE product_code LIKE 'ELE%', αλλά μόνο η εκδοχή με LIKE μπορεί να χρησιμοποιήσει index στο product_code.

Εναλλακτική σύνταξη

Θα δεις επίσης τη SUBSTR, άλλο όνομα για τη SUBSTRING, καθώς και τις LEFT και RIGHT, που παίρνουν χαρακτήρες από τη μία ή την άλλη άκρη:

-- Not in SQL Server
SELECT SUBSTR('Joe Bloggs', 1, 3);
-- Output: Joe

-- Not in SQLite: use SUBSTRING('Joe Bloggs', 1, 3) and SUBSTRING('Joe Bloggs', -6)
SELECT LEFT('Joe Bloggs', 3);
-- Output: Joe

SELECT RIGHT('Joe Bloggs', 6);
-- Output: Bloggs

-- PostgreSQL and MySQL: the standard SQL form
SELECT SUBSTRING('Joe Bloggs' FROM 1 FOR 3);
-- Output: Joe

Για να ξεκινήσεις μετά από έναν συγκεκριμένο χαρακτήρα, βρες πρώτα τη θέση του:

SELECT INSTR('joe@example.com', '@');
-- Output: 4
-- PostgreSQL: POSITION('@' IN 'joe@example.com'); SQL Server: CHARINDEX('@', 'joe@example.com')

Πότε να χρησιμοποιείς τη SUBSTRING;

Χρησιμοποίησε τη SUBSTRING όταν το κομμάτι του string που χρειάζεσαι βρίσκεται σε γνωστή θέση ή αμέσως μετά από έναν χαρακτήρα που μπορείς να εντοπίσεις. Οι περισσότερες χρήσεις ανήκουν σε μία από αυτές τις τέσσερις.

Πάρε τους πρώτους χαρακτήρες

Κωδικοί και ονόματα συχνά έχουν νόημα στην αρχή: την κατηγορία σε έναν κωδικό προϊόντος, ένα αρχικό, μια σύντομη προεπισκόπηση μιας μεγάλης περιγραφής. Το SUBSTRING(column, 1, n) παίρνει τους πρώτους n χαρακτήρες.

Βγάλε πεδία από τιμές σταθερής μορφής

Όταν κάθε τιμή έχει την ίδια διάταξη, κάθε τμήμα βρίσκεται στην ίδια θέση σε κάθε γραμμή: ο κωδικός περιοχής σε έναν αριθμό τηλεφώνου όπως (303) 555-0147, το έτος στο ORD-2024-001 ή τα πεδία μιας εγγραφής σταθερού πλάτους από ένα παλαιότερο σύστημα.

Εξήγαγε κείμενο μετά από διαχωριστικό

Τα domains των email, οι επεκτάσεις αρχείων και τα paths των URL ξεκινούν μετά από έναν χαρακτήρα του οποίου η θέση αλλάζει από γραμμή σε γραμμή. Βρες τη θέση του με την INSTR, ξεκίνα έναν χαρακτήρα μετά και πάρε το υπόλοιπο string.

Κράτα τους τελευταίους χαρακτήρες

Για να κρύψεις έναν αριθμό κάρτας ή λογαριασμού ή να διαβάσεις ένα επίθημα, μετράς προς τα πίσω από το τέλος. Υπολόγισε την αρχή από το μήκος του string ή, σε MySQL και SQLite, χρησιμοποίησε αρνητική αρχή.

Πραγματικά παραδείγματα της SUBSTRING

Μέτρησε προϊόντα ανά κατηγορία από τον κωδικό τους

Οι κωδικοί προϊόντων ξεκινούν με μια κατηγορία τριών γραμμάτων. Κάνε ομαδοποίηση με βάση αυτό το πρόθεμα για να μετρήσεις τα προϊόντα κάθε κατηγορίας:

-- Input: products
-- product_code | name
-- -------------+-----------
-- ELE-1234     | USB-C Hub
-- FUR-0087     | Desk Chair
-- ELE-5521     | Webcam
-- OFF-2210     | Stapler

SELECT SUBSTRING(product_code, 1, 3) AS category, COUNT(*) AS products
FROM products
GROUP BY SUBSTRING(product_code, 1, 3)
ORDER BY category;

-- Output:
-- category | products
-- ---------+---------
-- ELE      | 2
-- FUR      | 1
-- OFF      | 1

Ανάλυσε μια εγγραφή σταθερού πλάτους

Οι εξαγωγές από παλαιότερα συστήματα συχνά τοποθετούν τα πεδία σε σταθερές θέσεις χωρίς διαχωριστικό. Εδώ το όνομα καταλαμβάνει 8 χαρακτήρες (συμπληρωμένους με κενά, που αφαιρεί η TRIM), η ημερομηνία γέννησης τους επόμενους 8 και ο κωδικός πόλης τους τελευταίους 3:

-- Input: legacy_data
-- record
-- -------------------
-- JOHNDOE 19850315NYC
-- MARYLEE 19780912CHI
-- JANEROE 19900722LAX

SELECT
  TRIM(SUBSTRING(record, 1, 8)) AS name,
  SUBSTRING(record, 9, 8) AS birth_date,
  SUBSTRING(record, 17, 3) AS city_code
FROM legacy_data;

-- Output:
-- name    | birth_date | city_code
-- --------+------------+----------
-- JOHNDOE | 19850315   | NYC
-- MARYLEE | 19780912   | CHI
-- JANEROE | 19900722   | LAX

Βρες την επέκταση κάθε αρχείου

Βρες την τελεία και πάρε ό,τι ακολουθεί. Η πρόταση WHERE παραλείπει τα αρχεία χωρίς τελεία:

-- Input: documents
-- filename
-- ---------------
-- q3-report.pdf
-- budget.xlsx
-- README
-- team-photo.jpeg

SELECT
  filename,
  SUBSTRING(filename, INSTR(filename, '.') + 1) AS extension
FROM documents
WHERE INSTR(filename, '.') > 0;

-- Output:
-- filename        | extension
-- ----------------+----------
-- q3-report.pdf   | pdf
-- budget.xlsx     | xlsx
-- team-photo.jpeg | jpeg

Στην PostgreSQL, χρησιμοποίησε POSITION('.' IN filename) αντί για INSTR. Στον SQL Server, χρησιμοποίησε CHARINDEX('.', filename) και πρόσθεσε ένα μήκος, όπως LEN(filename).

Κρύψε έναν αριθμό κάρτας

Δεν έχουν όλοι οι αριθμοί καρτών 16 ψηφία, οπότε μια σταθερή θέση αρχής κόβει τους αριθμούς American Express. Μέτρα καλύτερα προς τα πίσω από το τέλος:

-- Input: payments
-- customer_name | card_number
-- --------------+-----------------
-- Lena Fischer  | 4111111111111111
-- Marcus Reid   | 5500005555555559
-- Aiko Tanaka   | 378282246310005

-- Wrong: position 13 only works for 16-digit cards
SELECT customer_name, '**** ' || SUBSTRING(card_number, 13, 4) AS masked_card
FROM payments;

-- Output:
-- customer_name | masked_card
-- --------------+------------
-- Lena Fischer  | **** 1111
-- Marcus Reid   | **** 5559
-- Aiko Tanaka   | **** 005

-- Right: start 4 characters from the end
SELECT customer_name, '**** ' || SUBSTRING(card_number, LENGTH(card_number) - 3, 4) AS masked_card
FROM payments;

-- Output:
-- customer_name | masked_card
-- --------------+------------
-- Lena Fischer  | **** 1111
-- Marcus Reid   | **** 5559
-- Aiko Tanaka   | **** 0005

Σε MySQL και SQL Server, ένωσε τα strings με CONCAT() αντί για ||. Ο SQL Server χρειάζεται επίσης LEN() αντί για LENGTH().

Περισσότερα για τη SUBSTRING

Σε αυτό το blog:

Επίσημη τεκμηρίωση:

Το Beekeeper Studio είναι ένα δωρεάν & open source GUI για βάσεις δεδομένων

Το καλύτερο εργαλείο για SQL queries & επεξεργασία που έχω χρησιμοποιήσει ποτέ. Μου δίνει ό,τι χρειάζομαι για να διαχειρίζομαι τη βάση δεδομένων μου. - ⭐⭐⭐⭐⭐ Mit

Το Beekeeper Studio είναι γρήγορο, εύχρηστο και κατανοητό με την πρώτη ματιά. Υποστηρίζει πάρα πολλές βάσεις δεδομένων και δουλεύει άψογα σε Windows, Mac και Linux.

Η έκδοση του Beekeeper για Linux έχει 100% όλες τις λειτουργίες, χωρίς εκπτώσεις και χωρίς συμβιβασμούς.

Τι λένε οι χρήστες για το Beekeeper Studio

★★★★★
"Το Beekeeper Studio αντικατέστησε εντελώς την παλιά μου ροή εργασίας με SQL. Είναι γρήγορο, εύχρηστο και κάνει τη δουλειά με βάσεις δεδομένων ξανά απολαυστική."
— Alex K., Database Developer
★★★★★
"Έχω δοκιμάσει πολλά GUI για βάσεις δεδομένων, αλλά το Beekeeper πετυχαίνει την τέλεια ισορροπία ανάμεσα σε δυνατότητες και απλότητα. Απλώς δουλεύει."
— Sarah M., Full Stack Engineer

Έτοιμος να βελτιώσεις τη ροή εργασίας σου με SQL;

download Δωρεάν λήψη