Sql προσθέτει χαρακτήρες στην αρχή μιας συμβολοσειράς. Σχετικά με τις λειτουργίες συμβολοσειράς SQL ή τον τρόπο χειρισμού κειμένου στη βάση δεδομένων MySQL

Οι βασικές συναρτήσεις και τελεστές συμβολοσειράς παρέχουν μια ποικιλία επιλογών και ως αποτέλεσμα επιστρέφουν μια τιμή συμβολοσειράς. Ορισμένες συναρτήσεις συμβολοσειρών είναι δύο στοιχείων, πράγμα που σημαίνει ότι μπορούν να λειτουργήσουν σε δύο χορδές ταυτόχρονα. Το πρότυπο SQL 2003 υποστηρίζει συναρτήσεις συμβολοσειράς.

τελεστής συνένωσης

Η SQL 2003 ορίζει τον τελεστή συνένωσης (||) που συνενώνει δύο ξεχωριστές συμβολοσειρές σε μια τιμή συμβολοσειράς.

Πλατφόρμα DB2

Η πλατφόρμα DB2 υποστηρίζει τον τελεστή σύνδεσης SQL 2003, καθώς και το συνώνυμο του, τη συνάρτηση CONCAT.

Πλατφόρμα MySQL

Η πλατφόρμα MySQL υποστηρίζει τη συνάρτηση CONCATQ, συνώνυμο του τελεστή σύνδεσης SQL 2003.

Oracle και PostgreSQL

Οι πλατφόρμες PostgreSQL και Oracle υποστηρίζουν τον τελεστή σύνδεσης διπλής κάθετης γραμμής SQL 2003.

Πλατφόρμα SQL Server

Πλατφόρμα SQL Serverχρησιμοποιεί το σύμβολο συν (+) ως συνώνυμο για τον τελεστή συνένωσης SQL 2003. Ο SQL Server έχει παράμετρος συστήματος CONCAT_NULL_YIELDS_NULL, το οποίο ελέγχει πώς συμπεριφέρεται το σύστημα όταν συναντώνται τιμές NULL όταν συνενώνονται οι τιμές συμβολοσειρών.

/* σύνταξη SQL 2003 */

χορδή || string2 || string3

string1string2string3

/* Για MySQL */

CONCAT ("stringl", "string2")

Εάν κάποια από τις συνδυασμένες τιμές είναι μηδενική, τότε επιστρέφεται μια κενή συμβολοσειρά. Επίσης, εάν μια αριθμητική τιμή εμπλέκεται στη συνένωση, μετατρέπεται σιωπηρά σε τιμή συμβολοσειράς.

SELECT CONCAT("My", "bologna", "has", "a", "first", "name...");

Η Μπολόνια μου έχει μικρό όνομα

SELECT CONCAT("My ", NULL, "has", "first", "name...");

ΜΕΤΑΤΡΟΠΗ και ΜΕΤΑΦΡΑΣΗ

Η συνάρτηση CONVERT αλλάζει την εμφάνιση μιας συμβολοσειράς χαρακτήρων μέσα σε ένα σύνολο χαρακτήρων και σελιδοποίηση. Για παράδειγμα, η συνάρτηση CONVERT μπορεί να χρησιμοποιηθεί για την αλλαγή του αριθμού των bit ανά χαρακτήρα.

Η συνάρτηση TRANSLATE μεταφράζει μια τιμή συμβολοσειράς από ένα σύνολο χαρακτήρων σε ένα άλλο. Για παράδειγμα, η συνάρτηση TRANSLATE μπορεί να χρησιμοποιηθεί για τη μετατροπή μιας τιμής από το σύνολο αγγλικών χαρακτήρων στο σύνολο χαρακτήρων Kanji (Ιαπωνικά) ή Κυριλλικά (Ρωσικά). Η ίδια η μετάφραση πρέπει να υπάρχει ήδη, είτε από προεπιλογή είτε να έχει δημιουργηθεί με την εντολή CREATE TRANSLATION.

Σύνταξη SQL 2003

CONVERT (character_value ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ το όνομα_μετατροπής_χαρακτήρα)

TRANSLATE(character_value USING translation_name)

Η συνάρτηση CONVERT μετατρέπει μια τιμή χαρακτήρων στο σύνολο χαρακτήρων με το όνομα που καθορίζεται στην παράμετρο character_conversion_name. Η συνάρτηση TRANSLATE μετατρέπει μια τιμή χαρακτήρων στο σύνολο χαρακτήρων που καθορίζεται στο translation_name.

Μεταξύ των εξεταζόμενων πλατφορμών, μόνο η Oracle υποστηρίζει τις συναρτήσεις CONVERT και TRANSLATE όπως ορίζονται στο πρότυπο SQL 2003. Η υλοποίηση της συνάρτησης TRANSLATE από την Oracle είναι πολύ παρόμοια, αλλά όχι πανομοιότυπη με την SQL 2003. Σε αυτήν την υλοποίηση, η συνάρτηση λαμβάνει μόνο δύο ορίσματα και μεταφράζεται μόνο μεταξύ του συνόλου χαρακτήρων της βάσης δεδομένων και του συνόλου χαρακτήρων με δυνατότητα τοπικής ρύθμισης.

Η υλοποίηση της συνάρτησης CONV από τη MySQL μετατρέπει αριθμούς μόνο από τη μια βάση στην άλλη. Στον SQL Server, ωστόσο, η υλοποίηση της συνάρτησης CONVERT είναι πολύ πλούσια και αλλάζει τον τύπο δεδομένων μιας έκφρασης, αλλά από όλες τις άλλες απόψεις διαφέρει από την τυπική συνάρτηση CONVERT SQL 2003. Η πλατφόρμα PostgreSQL δεν υποστηρίζει τη συνάρτηση CONVERT και η υλοποίηση της συνάρτησης TRANSLATE μετατρέπει όλες τις εμφανίσεις μιας συμβολοσειράς χαρακτήρων σε οποιαδήποτε άλλη συμβολοσειρά χαρακτήρων.

DB2

Η πλατφόρμα DB2 δεν υποστηρίζει τη λειτουργία CONVERT και η υποστήριξη για τη λειτουργία TRANSLATE δεν είναι συμβατή με το πρότυπο ANSI. Η συνάρτηση TRANSLATE χρησιμοποιείται για τη μετατροπή υποσυμβολοσειρών και ιστορικά ήταν συνώνυμη με τη συνάρτηση UPPER επειδή η συνάρτηση UPPER προστέθηκε πρόσφατα στο DB2. Εάν η συνάρτηση TRANSLATE χρησιμοποιείται στο DB2 με ένα όρισμα έκφρασης ενός χαρακτήρα, το αποτέλεσμα είναι η ίδια συμβολοσειρά που μετατρέπεται σε κεφαλαία. Εάν η συνάρτηση χρησιμοποιείται με πολλά ορίσματα, όπως TRANSLATE(ucmo4HUK, αντικατάσταση, αντιστοίχιση), τότε η συνάρτηση θα μετατρέψει όλους τους χαρακτήρες στην πηγή που βρίσκονται επίσης στην παράμετρο αντιστοίχισης. Κάθε χαρακτήρας στην πηγή που βρίσκεται στην ίδια θέση με την παράμετρο αντιστοίχισης θα αντικατασταθεί από τον χαρακτήρα από την παράμετρο αντικατάστασης. Παρακάτω είναι ένα παράδειγμα.

ΜΕΤΑΦΡΑΣΗ ("Γεια σου, Κόσμε!") "HELLO; WORLD!"

TRANSLATE("Hello, World1", "wZ", "1W") "Hewwo, Zorwd1

MySQL

Η πλατφόρμα MySQL δεν υποστηρίζει τις λειτουργίες TRANSLATE και CONVERT.

Μαντείο

Η πλατφόρμα Oracle υποστηρίζει την ακόλουθη σύνταξη για τις συναρτήσεις CONVERT και TRANSLATE.

Στην υλοποίηση της Oracle, η συνάρτηση CONVERT επιστρέφει το κείμενο της τιμής χαρακτήρων που έχει μετατραπεί σε target_character_set. Η παράμετρος character_value είναι η συμβολοσειρά που θα μετατραπεί, η παράμετρος target_charset είναι το όνομα του συνόλου χαρακτήρων στο οποίο πρόκειται να μετατραπεί η συμβολοσειρά και η παράμετρος source_charset είναι το σύνολο χαρακτήρων στο οποίο αποθηκεύτηκε αρχικά η τιμή συμβολοσειράς.

Η συνάρτηση TRANSLATE στο Oracle συμμορφώνεται με τη σύνταξη ANSI, αλλά μπορείτε να επιλέξετε μόνο ένα από τα δύο σύνολα χαρακτήρων: το σύνολο χαρακτήρων της βάσης δεδομένων (CHARJCS) και το σύνολο χαρακτήρων υποστήριξης εθνικής γλώσσας (NCHARJZS).

Η Oracle υποστηρίζει επίσης μια άλλη λειτουργία που ονομάζεται επίσης ΜΕΤΑΦΡΑΣΗ (χωρίς χρήση λέξη-κλειδίΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ). Αυτή η συνάρτηση TRANSLATE δεν έχει καμία σχέση με τη μετατροπή συνόλου χαρακτήρων.

Τα ονόματα των συνόλων χαρακτήρων προορισμού και πηγής μπορούν να μεταβιβαστούν είτε ως σταθερές συμβολοσειράς είτε ως αναφορά σε μια στήλη πίνακα. Σημειώστε ότι όταν μετατρέπετε μια συμβολοσειρά σε σύνολο χαρακτήρων που δεν εμφανίζει όλους τους χαρακτήρες που έχουν μετατραπεί, μπορείτε να αντικαταστήσετε χαρακτήρες μπαλαντέρ.

Η Oracle υποστηρίζει πολλά κοινά σύνολα χαρακτήρων, τα οποία περιλαμβάνουν US7ASCII, WE8DECDEC. WE8HP, F7DEC, WE8EBCDIC500, WE8PC850u WE8ISO8859PI. Για παράδειγμα:

SELECT CONVERT("Gro2", "US7ASCII", "WE8HP") FROM DUAL;

PostgreSQL

Η πλατφόρμα PostgreSQL υποστηρίζει τη δήλωση ANSI CONVERT και οι μετατροπές μπορούν να οριστούν εδώ χρησιμοποιώντας την εντολή CREATE CONVERSION. Η υλοποίηση της συνάρτησης TRANSLATE από την PostgreSQL παρέχει ένα εκτεταμένο σύνολο συναρτήσεων που σας επιτρέπουν να μετατρέψετε οποιοδήποτε κείμενο σε άλλο κείμενο μέσα σε μια καθορισμένη συμβολοσειρά.

TRANSLATE (συμβολοσειρά χαρακτήρων, from_text, to_text)

Να μερικά παραδείγματα:

SELECT TRANSLATE("12345abcde", "5a", "XX"); "1234XXbcde" SELECT TRANSLATE(title, "Computer", "PC") FROM title="Personal_computer" SELECT CONVERT("PostgreSQL" USING iso_8859_1_to_utf_8) "PostgreSQL"

SQL Server

Η πλατφόρμα SQL Server δεν υποστηρίζει τη συνάρτηση TRANSLATE. Η υλοποίηση του SQL Server της συνάρτησης CONVERT δεν ακολουθεί το πρότυπο SQL 2003. Αυτή η συνάρτηση είναι ισοδύναμη με τη συνάρτηση CAST στον SQL Server.

CONVERT (τύπος δεδομένων[(μήκος) | (ακρίβεια, κλίμακα)], έκφραση, στυλ])

Το στυλ ρήτρας χρησιμοποιείται για τον καθορισμό της μορφής μετατροπής ημερομηνίας. Πίσω Επιπλέον πληροφορίεςανατρέξτε στην τεκμηρίωση του SQL Server. Παρακάτω είναι ένα παράδειγμα.

SELECT title, CONVERT(char(7), ytd_sales) ΑΠΟ τίτλους ORDER BY BY τίτλο GO

Σε αυτό το μέρος, θα μιλήσουμε για τις λειτουργίες της εργασίας με πληροφορίες κειμένου που μπορούν να χρησιμοποιηθούν σε ερωτήματα και κώδικα προγράμματοςσε PL/SQL.

Συνάρτηση CONCAT(strl, str2)

Αυτή η συνάρτηση συνενώνει τις συμβολοσειρές strl και str2. Εάν ένα από τα ορίσματα είναι NULL, τότε αντιμετωπίζεται ως κενή συμβολοσειρά. Εάν και τα δύο ορίσματα είναι NULL, τότε η συνάρτηση επιστρέφει NULL. Παράδειγμα:

ΕΠΙΛΟΓΗ CONCAT("Ο ιερέας\"είχε σκύλο") x1,
CONCATCTtest" , NULL) x2,
CONCAT(NULL, "Test") x3,
CONCAT(NULL, NULL) x4
ΑΠΟ διπλό

Ο Πάπας είχε ένα σκύλο

Για τη συνένωση συμβολοσειρών, η Oracle υποστηρίζει έναν ειδικό τελεστή συνένωσης "||" που λειτουργεί παρόμοια με τη συνάρτηση CONCAT, για παράδειγμα:

SELECT CONCAT("Priest\"είχε έναν σκύλο") x1, "Priest" || "είχε έναν σκύλο" x2
ΑΠΟ διπλό

Μην συγχέετε τον τελεστή συνένωσης "||", που ισοδυναμεί με την κλήση της συνάρτησης CONCAT, και τον τελεστή "+" που χρησιμοποιείται σε αριθμητικές πράξεις. Στην Oracle είναι διαφορετικούς χειριστές, αλλά λόγω της αυτόματης χύτευσης τύπου, είναι πιθανά ανεπαίσθητα σφάλματα, για παράδειγμα:

ΕΠΙΛΟΓΗ "5" + "3" x1
ΑΠΟ διπλό

Σε αυτήν την περίπτωση, επιστρέφεται η αριθμητική τιμή 8, όχι συμβολοσειρά κειμένου"53". Αυτό οφείλεται στο γεγονός ότι, έχοντας εντοπίσει την αριθμητική πράξη "+", η Oracle προσπαθεί αυτόματα να ρίξει τα ορίσματα στον τύπο NUMBER.

Λειτουργία LOWER(str).

Η συνάρτηση LOWER μετατρέπει όλους τους χαρακτήρες της συμβολοσειράς σε πεζούς. Παράδειγμα:

ΕΠΙΛΟΓΗ ΚΑΤΩ ("ΔΕΔΟΜΕΝΑ ΚΕΙΜΕΝΟΥ") X
ΑΠΟ διπλό

ΛειτουργίαUPPER(str)

Η συνάρτηση UPPER μετατρέπει όλους τους χαρακτήρες της συμβολοσειράς σε κεφαλαία. Παράδειγμα:

ΕΠΙΛΟΓΗ UPPER("ΔΕΔΟΜΕΝΑ ΚΕΙΜΕΝΟΥ") X
ΑΠΟ διπλό

Συνάρτηση INITCAP(str).

Επιστρέφει τη συμβολοσειρά με τα πρώτα γράμματα όλων των λέξεων να έχουν μετατραπεί σε κεφαλαία. Η λειτουργία είναι χρήσιμη για τη μορφοποίηση του πλήρους ονόματος κατά τη δημιουργία αναφορών. Παράδειγμα:

ΕΠΙΛΕΞΤΕ INITCAPCIvanov Petr Sidorovich") X
ΑΠΟ διπλό

ΛειτουργίεςLTRIM(str[,set])ΚαιRTRIM(str[,set])

Η συνάρτηση LTRIM αφαιρεί όλους τους χαρακτήρες από την αρχή μιας συμβολοσειράς μέχρι τον πρώτο χαρακτήρα που δεν περιλαμβάνεται στο σύνολο χαρακτήρων. Από προεπιλογή, το σύνολο αποτελείται από ένα μόνο διάστημα και μπορεί να παραλειφθεί. Η συνάρτηση RTRIM είναι παρόμοια με την LTRIM, αλλά αφαιρεί χαρακτήρες από το τέλος της συμβολοσειράς. Ας δούμε μερικά παραδείγματα:

SELECT LTRIM("TEXt DATA") X1,
LTRIM(" _ # ΔΕΔΟΜΕΝΑ TeXt", " #_") X2,
LTRIM(" 1234567890 TeXt DATA", " 1234567890") X3
ΑΠΟ διπλό

Συνάρτηση REPLACE(str, search_str, [,replace_str]).

Η συνάρτηση REPLACE αναζητά το μοτίβο search_str στη συμβολοσειρά και αντικαθιστά κάθε εμφάνιση με το replace_str. Από προεπιλογή, το replace_str είναι η κενή συμβολοσειρά, επομένως η κλήση της συνάρτησης REPLACE με δύο ορίσματα καταργεί όλες τις εμφανίσεις που βρέθηκαν. Η αναζήτηση για μια υποσυμβολοσειρά γίνεται με διάκριση πεζών-κεφαλαίων. Παράδειγμα:

ΕΠΙΛΟΓΗ ΑΝΤΙΚΑΤΑΣΤΗΣΗΣ ("Ο ιερέας είχε σκύλο", "σκύλος", "γάτα") x1,
REPLACE ("Ο ιερέας είχε ένα θυμωμένο σκυλί", "κακό") x2,
REPLACE ("Ο ιερέας είχε σκύλο", "Σκύλος", "Γάτα") x3
ΑΠΟ διπλό

Ο Πάπας είχε μια γάτα

Ο Πάπας είχε ένα σκύλο

Ο Πάπας είχε ένα σκύλο

Συνάρτηση TRANSLATE(str, from_mask, to_mask)

Η συνάρτηση TRANSLATE αναλύει τη συμβολοσειρά και αντικαθιστά όλους τους χαρακτήρες της συμβολοσειράς from_mask με τους αντίστοιχους χαρακτήρες από to_mask. Για να λειτουργήσει σωστά η συνάρτηση, οι συμβολοσειρές from_mask και to_mask πρέπει να έχουν το ίδιο μήκος ή η συμβολοσειρά from_mask πρέπει να είναι μεγαλύτερη από την to_mask. Εάν το from_mask είναι μεγαλύτερο από το to_mask και κατά την επεξεργασία της συμβολοσειράς, βρέθηκαν χαρακτήρες που ταιριάζουν με έναν από τους χαρακτήρες από το from_mask και δεν υπάρχει αντιστοιχία για αυτούς στο to_mask, τότε αυτοί οι χαρακτήρες θα αφαιρεθούν από τη συμβολοσειρά. Εάν περάσετε from_mask ή to_mask ίσο με NULL, τότε η συνάρτηση θα επιστρέψει NULL. Η σύγκριση γίνεται με διάκριση πεζών-κεφαλαίων.

SELECT TRANSLATE("Test 12345", "e2\ "E!") x1,
TRANSLATE("Test 12345", "e234", "E") x2
ΑΠΟ διπλό

Αυτή η λειτουργία είναι βολική για την επίλυση ορισμένων πρακτικών προβλημάτων που σχετίζονται με τη μετατροπή χαρακτήρων ή την αναζήτηση απαγορευμένων χαρακτήρων. Για παράδειγμα, πρέπει να αναλύσετε έναν κωδικό πρόσβασης και να μάθετε αν περιέχει τουλάχιστον έναν αριθμό. Η εφαρμογή αυτού του ελέγχου χρησιμοποιώντας το TRANSLATE μοιάζει με αυτό:

IF TRANSLATE(PassWd, "0123456789", "*") = PassWd THEN
ADD_ERR0R("Σφάλμα - Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον έναν αριθμό!");
ΕΠΙΣΤΡΟΦΗ 1;
ΤΕΛΟΣ ΕΑΝ;

Ένα άλλο παράδειγμα: ένας αριθμός προετοιμάζεται για τη μετατροπή του σε NUMBER. Πρέπει να αντικαταστήσετε τα δεκαδικά διαχωριστικά "," και "." επί "." και αφαιρέστε κενά. Η υλοποίηση αυτής της λειτουργίας χρησιμοποιώντας το TRANSLATE μοιάζει με αυτό:

SELECT TRANSLATE("123 455.23", "., ", " . . ") x1,
TRANSLATE("-123 455.23", "., ", " . . ") x2
ΑΠΟ διπλό

Συνάρτηση SUBSTR(str, m[,n])

Η συνάρτηση SUBSTR επιστρέφει ένα τμήμα της συμβολοσειράς, που ξεκινά από τον χαρακτήρα m μήκους n χαρακτήρων. Το μήκος μπορεί να παραλειφθεί - σε αυτήν την περίπτωση, μια συμβολοσειρά επιστρέφεται από τον χαρακτήρα m στο τέλος της συμβολοσειράς str. Οι χαρακτήρες αριθμούνται από το 1. Εάν καθορίσετε m = 0, τότε η αντιγραφή θα συνεχίσει να ξεκινά από τον πρώτο χαρακτήρα. Ο καθορισμός μιας αρνητικής τιμής για το m προκαλεί την καταμέτρηση των χαρακτήρων από το τέλος της συμβολοσειράς και όχι από την αρχή. Ο καθορισμός τιμών m που είναι μεγαλύτερες από το μήκος της συμβολοσειράς σε απόλυτη τιμή προκαλεί τη συνάρτηση να επιστρέψει NULL.

SELECT SUBSTR("Ο ιερέας είχε έναν σκύλο", 13) x1,
SUBSTR("Ο παπάς είχε ένα σκύλο", -6) x2,
SUBSTR("Αυτό είναι δοκιμαστικό κείμενο", 5, 8) x3,
SUBSTR("Ο παπάς είχε σκύλο", 150) x4
ΑΠΟ διπλό

κείμενο

Συνάρτηση INSTR(str, search_str [,n[,m]])

Η συνάρτηση INSTR επιστρέφει τη θέση του πρώτου χαρακτήρα m-ro του τμήματος της συμβολοσειράς που ταιριάζει με τη συμβολοσειρά search_str. Η σύγκριση γίνεται από τον n-ο χαρακτήρα της συμβολοσειράς, η σύγκριση γίνεται με διάκριση πεζών-κεφαλαίων. Από προεπιλογή, n = m = 1, δηλαδή η αναζήτηση εκτελείται από την αρχή της συμβολοσειράς και επιστρέφεται η θέση του πρώτου κομματιού που βρέθηκε. Εάν η αναζήτηση αποτύχει, η συνάρτηση επιστρέφει 0.

SELECT INSTR("y butt was a dog", "dog") x1,
INSTR("y butt was a dog", "cat") x2,
INSTR("Αυτό είναι κείμενο για επίδειξη αναζήτησης κειμένου", "κείμενο", 1, 2) x3,
INSTR('11111000000001", "1", 7) x4
ΑΠΟ διπλό

Με αυτήν τη συνάρτηση, καθώς και με όλες τις άλλες στο Oracle, συχνά γίνονται τυπικά σφάλματα που σχετίζονται με τον χειρισμό της τιμής NULL. Αν str=NULL, τότε η συνάρτηση θα επιστρέψει NULL, όχι μηδέν! Αυτό πρέπει να λαμβάνεται υπόψη κατά την κατασκευή διαφόρων συνθηκών. Για παράδειγμα, αυτό το τμήμα προγράμματος PL/SQL δεν λαμβάνει υπόψη αυτό το χαρακτηριστικό:

IF INSTR(TXT_VAR,"*") = 0 ΕΠΕΙΤΑ
...
ΤΕΛΟΣΑΝ;

Σε αυτήν την περίπτωση, θα ήταν σωστό να γράψουμε ως εξής:

IF NVL(INSTR(TXT_VAR, "*"), 0) = 0 ΤΟΤΕ
...
ΤΕΛΟΣ ΕΑΝ;

Συναρτήσεις LENGTH(str) και LENGTHB(str).

Η συνάρτηση LENGTH(str) επιστρέφει το μήκος της συμβολοσειράς σε χαρακτήρες. Για μια κενή συμβολοσειρά και μια τιμή NULL, η συνάρτηση επιστρέφει NULL, επομένως συνιστάται η χρήση NVL με αυτήν τη συνάρτηση.

ΕΠΙΛΕΞΤΕ ΜΗΚΟΣ ("Ο ιερέας είχε ένα σκύλο") x1,
LENGTH("") x2,
ΜΗΚΟΣ(ΜΕΝΟ) x3,
NVL(LENGTH(""), 0) x4
ΑΠΟ διπλό

Η συνάρτηση LENGTHB είναι παρόμοια με τη συνάρτηση LENGTH, αλλά επιστρέφει το μήκος της συμβολοσειράς σε byte.

Συνάρτηση ASCII(str).

Επιστρέφει τον κωδικό ASCII του πρώτου χαρακτήρα του str όταν χρησιμοποιείται κωδικοποίηση ASCII και την τιμή του πρώτου byte ενός χαρακτήρα πολλών byte όταν χρησιμοποιείται κωδικοποίηση χαρακτήρων πολλών byte. Παράδειγμα:

SELECT ASCII("Test") x1 FROM dual

Συνάρτηση CHR(n).

Επιστρέφει έναν χαρακτήρα από τον κωδικό του.

ΕΠΙΛΟΓΗ CHR(64) x1
ΑΠΟ διπλό

Σε άλλους. Έχει την εξής σύνταξη:

CONV(αριθμός,N,M)

Διαφωνία αριθμόςβρίσκεται στο αριθμητικό σύστημα με βάση Ν. Η συνάρτηση το μετατρέπει στο σύστημα αριθμών με βάση Μ και επιστρέφει την τιμή ως συμβολοσειρά.

Παράδειγμα 1

Το ακόλουθο ερώτημα μετατρέπει τον αριθμό 2 από δεκαδικό σε δυαδικό:

SELECT CONV(2,10,2);

Αποτέλεσμα: 10

Για να μετατρέψετε τον αριθμό 2Ε από δεκαεξαδικό σε δεκαδικό, απαιτείται ένα ερώτημα:

SELECT CONV("2E",16,10);

Αποτέλεσμα: 46

Λειτουργία ΑΠΑΝΘΡΑΚΩΝΩ()μεταφράζει τον κώδικα ASCII σε συμβολοσειρές. Έχει την εξής σύνταξη:

CHAR(n1,n2,n3..)

Παράδειγμα 2

SELECT CHAR(83,81,76);

Αποτέλεσμα: SQL

Οι παρακάτω συναρτήσεις επιστρέφουν το μήκος μιας συμβολοσειράς:

  • LENGTH(string);
  • OCTET_LENGTH(συμβολοσειρά);
  • CHAR_LENGTH(συμβολοσειρά);
  • CHARACTER_LENGTH(συμβολοσειρά).

Παράδειγμα 3

SELECT LENGTH("MySQL");

Αποτέλεσμα: 5

Μερικές φορές ένα χρήσιμο χαρακτηριστικό BIT_LENGTH (συμβολοσειρά), το οποίο επιστρέφει το μήκος της συμβολοσειράς σε bit.

Παράδειγμα 4

SELECT BIT_LENGTH("MySQL");

Αποτέλεσμα: 40

Λειτουργίες υποσυμβολοσειράς

Μια υποσυμβολοσειρά είναι συνήθως μέρος μιας συμβολοσειράς. Συχνά θέλετε να μάθετε τη θέση της πρώτης εμφάνισης μιας υποσυμβολοσειράς σε μια συμβολοσειρά. Υπάρχουν τρεις λειτουργίες που λύνουν αυτό το πρόβλημα στη MySQL:

  • LOCATE(υποσυμβολοσειρά, συμβολοσειρά [,θέση]);
  • POSITION(substring, string);
  • INSTR (συμβολοσειρά, υποσυμβολοσειρά).

Εάν η υποσυμβολοσειρά δεν περιέχεται στη συμβολοσειρά, τότε και οι τρεις συναρτήσεις επιστρέφουν 0. Η συνάρτηση INSTR() διαφέρει από τις άλλες δύο ως προς τη σειρά των ορισμάτων της. Η συνάρτηση LOCATE() μπορεί να περιέχει ένα τρίτο όρισμα θέση, το οποίο σας επιτρέπει να αναζητήσετε μια δευτερεύουσα συμβολοσειρά σε μια συμβολοσειρά όχι από την αρχή, αλλά από την καθορισμένη θέση.

Παράδειγμα 5

SELECT LOCATE("Topaz", "Topaz");

Αποτέλεσμα: 31

SELECT POSITION("Topaz", "Topaz");

Αποτέλεσμα: 31

SELECT INSTR("Topaz",'Topaz');

Αποτέλεσμα: 31

SELECT LOCATE("Topaz", "Topaz Plant and LLC Topaz", 9);

Αποτέλεσμα: 20

SELECT LOCATE("Diamond", "Topaz");

Αποτέλεσμα: 0

Λειτουργίες ΑΡΙΣΤΕΡΑ (γραμμή, N)Και RIGHT (συμβολοσειρά, N)επιστρέψτε τους αριστερότερους και δεξιότερους N χαρακτήρες στη συμβολοσειρά, αντίστοιχα.

Παράδειγμα 6

SELECT LEFT("MySQL DBMS", 4);

Αποτέλεσμα: DBMS

SELECT RIGHT("MySQL DBMS", 5);

Αποτέλεσμα: MySQL

Μερικές φορές χρειάζεται να λάβετε μια υποσυμβολοσειρά που ξεκινά από κάποια δεδομένη θέση. Για αυτό χρησιμοποιούνται οι ακόλουθες λειτουργίες:

  • SUBSTRING(string, position, N);
  • MID (συμβολοσειρά, θέση, N).

Και οι δύο συναρτήσεις επιστρέφουν N χαρακτήρες της δεδομένης συμβολοσειράς, ξεκινώντας από τη δεδομένη θέση.

Παράδειγμα 7

SELECT SUBSTRING("MySQL DBMS είναι ένα από τα πιο δημοφιλή DBMS", 6,5);

Αποτέλεσμα: MySQL

Όταν εργάζεστε με διευθύνσεις email και διευθύνσεις ιστότοπου, η λειτουργία είναι πολύ χρήσιμη. SUBSTR_INDEX(). Η συνάρτηση έχει τρία ορίσματα:

SUBSTR_INDEX(συμβολοσειρά, οριοθέτης, N).

Το όρισμα N μπορεί να είναι θετικό ή αρνητικό. Εάν είναι αρνητικό, τότε η συνάρτηση βρίσκει την Nη εμφάνιση του οριοθέτη, μετρώντας από τα δεξιά. Στη συνέχεια, επιστρέφει τη δευτερεύουσα συμβολοσειρά που βρίσκεται στα δεξιά του οριοθέτη που βρέθηκε. Εάν το N είναι θετικό, τότε η συνάρτηση βρίσκει την Nη εμφάνιση του οριοθέτη προς τα αριστερά και επιστρέφει την υποσυμβολοσειρά στα αριστερά του οριοθέτη που βρέθηκε.

Παράδειγμα 8

SELECT SUBSTRING_INDEX("www.mysql.ru",".",2);

Αποτέλεσμα: www.mysql

SELECT SUBSTRING_INDEX("www.mysql.ru",".",-2);

Αποτέλεσμα: mysql.com

Λειτουργία REPLACE (string, substring1, substring2)σας επιτρέπει να αντικαταστήσετε όλες τις εμφανίσεις του substring1 σε μια συμβολοσειρά με το substring2.

Από βιβλίο Μητρώο των Windows συγγραφέας Klimov A

Γρήγορη ολοκλήρωση Τα Windows λειτουργούν(Windows NT/2000/XP) Οι εκδόσεις 3.1 και 3.5 των Windows NT επέτρεψαν το κλείσιμο όλων των διεργασιών σε 20 δευτερόλεπτα. Στα Windows NT 3.51 και νεότερες εκδόσεις, είναι δυνατό να καθοριστεί ο χρόνος που χρειάζεται το σύστημα για να τερματιστεί η λειτουργία του. Για να το κάνετε αυτό, πρέπει να διορθώσετε το κλειδί

Από το βιβλίο Processing Databases on Visual Basic®.NET συγγραφέας McManus Geoffrey P

ΚΕΦΑΛΑΙΟ 3 Εισαγωγή του SQL Server 2000 Στο παρελθόν, πολλοί προγραμματιστές άρχισαν να δημιουργούν εφαρμογές βάσεων δεδομένων χρησιμοποιώντας τη γλώσσα Visual Basic και τη βάση δεδομένων SQL Server 2000. δεδομένα της MicrosoftΠρόσβαση με Jet core. Μόλις η βάση δεδομένων αυξήθηκε σε πολλές χιλιάδες εγγραφές ή οι υπηρεσίες της είχαν πρόσβαση σε αρκετούς

Από βιβλίο Σενάριο WindowsΚεντρικός υπολογιστής για Windows 2000/XP συγγραφέας Ποπόφ Αντρέι Βλαντιμίροβιτς

Απαιτήσεις εγκατάστασης SQL Server 2000 Για να εγκαταστήσετε τον SQL Server 2000, χρειάζεστε έναν υπολογιστή με επεξεργαστή Pentium (ή συμβατό) με συχνότητα τουλάχιστον 166 MHz, χώρο στον σκληρό δίσκο από 95 έως 270 MB (270 MB για τυπική εγκατάσταση και 44 MB για Desktop Engine), μονάδα δίσκου

Από το βιβλίο Όσα δεν γράφονται στα βιβλία των Δελφών συγγραφέας Grigoriev A.B.

Εγκατάσταση του SQL Server 2000 Αφού επιλέξετε έναν υπολογιστή με τις επιθυμητές ρυθμίσεις παραμέτρων, μπορείτε να προχωρήσετε στην εγκατάσταση. Γενικά, η διαδικασία εγκατάστασης του SQL Server 2000 είναι πολύ απλή, με τις ακόλουθες εξαιρέσεις: παίρνει πολύ χρόνο. κατά τη διαδικασία εγκατάστασης, ζητούνται πολλά στην αρχή

Από το Εγχειρίδιο PHP του συγγραφέα

Βασικά στοιχεία του SQL Server 2000 Μετά την εγκατάσταση και Εκκίνηση SQLΟ διακομιστής πρέπει να ολοκληρώσει τα ακόλουθα βήματα πριν προχωρήσει στην ανάκτηση ή την αποθήκευση δεδομένων: δημιουργία μίας ή περισσότερων βάσεων δεδομένων. δημιουργία πινάκων στη βάση δεδομένων. δημιουργήστε προβολές και αποθηκεύστε

Από το βιβλίο XSLT συγγραφέας Holzner Stephen

Λειτουργίες για εργασία με πίνακες Το A2.17 δείχνει τις λειτουργίες με τις οποίες μπορείτε να δημιουργήσετε νέους πίνακες και να λάβετε πληροφορίες για τους υπάρχοντες Πίνακας A2.17. Συναρτήσεις πίνακα Συνάρτηση Περιγραφή Array(arglist) Επιστρέφει μια τιμή παραλλαγής που είναι

Από το βιβλίο Linux: Πλήρης οδηγός συγγραφέας Kolisnichenko Denis Nikolaevich

3.3. Λεπτομέρειες της εργασίας με συμβολοσειρές Σε αυτήν την ενότητα, θα εξετάσουμε μερικές λεπτές αποχρώσεις της εργασίας με συμβολοσειρές, οι οποίες μας επιτρέπουν να κατανοήσουμε καλύτερα τον κώδικα που δημιουργεί ο μεταγλωττιστής για ορισμένες φαινομενικά στοιχειώδεις ενέργειες. Δεν λειτουργούν όλα τα παραδείγματα που δίνονται εδώ διαφορετικά

Από το βιβλίο The Art of Shell Scripting Programming του Κούπερ Μέντελ

Από το βιβλίο The C Language - A Beginner's Guide συγγραφέας Prata Stephen

Συναρτήσεις XPath για εργασία με συμβολοσειρές Οι ακόλουθες συναρτήσεις XPath για εργασία με συμβολοσειρές είναι διαθέσιμες στο XSLT: concat (string string1, string string2,...). Επιστρέφει τη συνένωση (ένωση) όλων των χορδών που έχουν περάσει σε αυτήν. περιέχει (string string1, string string2). Επιστρέφει true εάν η πρώτη γραμμή περιέχει (περιέχει) τη δεύτερη

Από το βιβλίο Linux and UNIX: shell programming. Οδηγός προγραμματιστή. συγγραφέας Tainsley David

23.2.2. Λειτουργίες μνήμης Οι συναρτήσεις μνήμης του Glib εκτελούν τις ίδιες ενέργειες με τις αντίστοιχες συναρτήσεις C. Ακολουθούν τα πρωτότυπά τους: gpointer g_malloc(gulong size);gpointer g_realloc(gpointer mem, gulong size);void g_free(gpointer

Από το βιβλίο Περιγραφή της Γλώσσας PascalABC.NET συγγραφέας Ομάδα RuBoard

Από το βιβλίο του συγγραφέα

13. Συμβολοσειρές χαρακτήρων και συναρτήσεις σε χορδές

Από το βιβλίο του συγγραφέα

ΣΥΝΑΡΤΗΣΕΙΣ ΣΥΜΒΟΛΟΣΕΙΩΝ Οι περισσότερες βιβλιοθήκες C παρέχουν συναρτήσεις που λειτουργούν σε συμβολοσειρές. Ας ρίξουμε μια ματιά σε τέσσερα από τα πιο χρήσιμα και κοινά: strlen(), strcat(), strcmp() και strcpy(). Έχουμε ήδη χρησιμοποιήσει τη συνάρτηση strlen(), η οποία βρίσκει το μήκος μιας συμβολοσειράς.

Από το βιβλίο του συγγραφέα

Από το βιβλίο του συγγραφέα

Υπορουτίνες για εργασία με χαρακτήρες και συμβολοσειρές συνάρτηση Chr(a: byte): char; Μετατρέπει έναν κώδικα σε μια συνάρτηση χαρακτήρων με κωδικοποίηση των Windows ChrUnicode(a: word): char; Μετατρέπει έναν κωδικό σε συνάρτηση χαρακτήρων Unicode OrdUnicode(a: char): word; Μετατρέπει έναν χαρακτήρα σε συνάρτηση κωδικού Unicode UpperCase(ch: char): char;

Από το βιβλίο του συγγραφέα

Λειτουργίες χρώματος Ο τύπος χρώματος χρώματος είναι συνώνυμο του System.Drawing.Color. συνάρτηση RGB(r,g,b: byte): Χρώμα; Επιστρέφει ένα χρώμα που περιέχει τα στοιχεία κόκκινο (r), πράσινο (g) και μπλε (b) (r,g και b - από 0 έως 255) συνάρτηση ARGB(a,r,g,b: byte): Χρώμα ; Επιστρέφει το χρώμα που περιέχει

Εδώ πλήρης λίσταΣυναρτήσεις συμβολοσειράς που λαμβάνονται από το BOL:

Το αποτέλεσμα είναι 11. Για να μάθουμε ποια γράμματα είναι, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση CHAR, η οποία επιστρέφει έναν χαρακτήρα με τον γνωστό κωδικό ASCII (από 0 έως 255):

Και εδώ είναι πώς, για παράδειγμα, μπορείτε να λάβετε έναν πίνακα κωδικών για όλους τους αλφαβητικούς χαρακτήρες:

SELECT CHAR(ASCII("a")+ num-1) letter, ASCII("a")+ num - 1 FROM (SELECT 5*5*(a-1)+5*(b-1) + c AS num ΑΠΟ (ΕΠΙΛΕΞΤΕ 1 a UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x CROSS JOIN (ΕΠΙΛΟΓΗ 1 b UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) SELECT 1 c UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) z) x WHERE ASCII("a")+ num -1 BETWEEN ASCII("a") AND ASCII("z")

Όσοι δεν γνωρίζουν ακόμη τη δημιουργία αριθμητικής ακολουθίας, παραπέμπω στο αντίστοιχο άρθρο.

Όπως γνωρίζετε, οι κωδικοί των πεζών και κεφαλαίων γραμμάτων είναι διαφορετικοί. Επομένως, για να λάβετε το πλήρες σύνολο χωρίς να ξαναγράψετε το ερώτημα, απλά πρέπει να προσθέσετε ένα παρόμοιο στον παραπάνω κώδικα:

Πιστεύω ότι δεν θα είναι δύσκολο να προστεθεί αυτή η επιστολή στον πίνακα, αν χρειαστεί.

Εξετάστε τώρα το πρόβλημα της εύρεσης της επιθυμητής υποσυμβολοσειράς σε μια έκφραση συμβολοσειράς. Δύο λειτουργίες μπορούν να χρησιμοποιηθούν για αυτό - ΧΑΡΙΝΔΕΞΚαι ΠΑΤΙΝΤΕΞ. Και οι δύο επιστρέφουν την αρχική θέση (τη θέση του πρώτου χαρακτήρα της υποσυμβολοσειράς) της υποσυμβολοσειράς στη συμβολοσειρά. Η συνάρτηση CHARINDEX έχει τη σύνταξη:

ΧΑΡΙΝΔΕΞ ( αναζήτηση_έκφρασης, string_expression[, αρχική_θέση])

Εδώ είναι μια προαιρετική ακέραιος παράμετρος αρχική_θέσηκαθορίζει τη θέση στην έκφραση συμβολοσειράς από την οποία θα γίνει η αναζήτηση αναζήτηση_έκφρασης. Εάν παραλειφθεί αυτή η παράμετρος, η αναζήτηση εκτελείται από την αρχή string_expression. Για παράδειγμα, ένα αίτημα

Θα πρέπει να σημειωθεί ότι εάν η υποσυμβολοσειρά ή η έκφραση συμβολοσειράς που αναζητήθηκε είναι NULL, τότε το αποτέλεσμα της συνάρτησης θα είναι επίσης NULL.

Το παρακάτω παράδειγμα καθορίζει τις θέσεις της πρώτης και της δεύτερης εμφάνισης του χαρακτήρα "a" στο όνομα του πλοίου "California"

Και εδώ, για παράδειγμα, πώς μπορείτε να βρείτε ονόματα πλοίων που περιέχουν μια ακολουθία τριών χαρακτήρων, ο πρώτος και ο τελευταίος από τους οποίους είναι "e":

Ατμόλουτρο για να ΑΡΙΣΤΕΡΑλειτουργία ΣΩΣΤΑεπιστρέφει τον δεδομένο αριθμό χαρακτήρων στα δεξιά μιας παράστασης συμβολοσειράς:

ΣΩΣΤΑ(<έκφραση χορδής>,<αριθμός χαρακτήρων>)

Για παράδειγμα, δείτε πώς μπορείτε να προσδιορίσετε τα ονόματα των πλοίων που ξεκινούν και τελειώνουν με το ίδιο γράμμα:

Εδώ διαχωρίζουμε το όνομα της κλάσης και το όνομα του πλοίου με ένα κενό. Επιπλέον, για να μην επαναλάβουμε ολόκληρη την κατασκευή ως όρισμα συνάρτησης, χρησιμοποιούμε ένα υποερώτημα. Το αποτέλεσμα θα μοιάζει με αυτό:

Για να εξαιρέσετε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε μία ακόμη χρήσιμο χαρακτηριστικό len (<έκφραση χορδής>) , το οποίο επιστρέφει τον αριθμό των χαρακτήρων σε μια συμβολοσειρά. Περιοριζόμαστε στην περίπτωση που ο αριθμός των χαρακτήρων είναι μεγαλύτερος από έναν:

Λειτουργία ΑΝΑΠΑΡΑΓΩΓΗσυμπληρώνει τη σταθερά "abcde" με πέντε κενά στα δεξιά, τα οποία δεν λαμβάνονται υπόψη από τη συνάρτηση ΛΕΝ, - και στις δύο περιπτώσεις παίρνουμε 5.
Λειτουργία ΔΕΔΟΜΕΝΑ ΔΕΔΟΜΕΝΑεπιστρέφει τον αριθμό των byte στην αναπαράσταση της μεταβλητής και μας δείχνει τη διαφορά μεταξύ των τύπων CHAR και VARCHAR. ΔΕΔΟΜΕΝΑ ΔΕΔΟΜΕΝΑθα μας δώσει 12 για CHAR και 10 για VARCHAR.
Οπως αναμενόταν, ΔΕΔΟΜΕΝΑ ΔΕΔΟΜΕΝΑγια μια μεταβλητή VARCHAR, επιστρέφει το πραγματικό μήκος της μεταβλητής. Γιατί όμως το αποτέλεσμα είναι 12 για μια μεταβλητή τύπου CHAR; Το θέμα είναι ότι ο CHAR είναι τύπος σταθερό μήκος. Εάν η τιμή της μεταβλητής είναι μικρότερη από το μήκος της και δηλώσαμε το μήκος ως CHAR(12), τότε η τιμή της μεταβλητής θα "ευθυγραμμιστεί" στο απαιτούμενο μήκος προσθέτοντας κενά μετάδοσης.

Υπάρχουν εργασίες στον ιστότοπο στις οποίες απαιτείται να παραγγείλετε (εύρεση του μέγιστου κ.λπ.) με αριθμητική σειρά τις τιμές που παρουσιάζονται σε μορφή κειμένου. Για παράδειγμα, αριθμός καθίσματος αεροσκάφους ("2d") ή ταχύτητα CD ("24x"). Το πρόβλημα είναι ότι το κείμενο ταξινομείται έτσι (αύξουσα)

Εάν απαιτείται η διάταξη των θέσεων με αύξουσα σειρά των σειρών, τότε η σειρά θα πρέπει να είναι η εξής

Αν περιοριστούμε σε αυτό, τότε παίρνουμε

Μένει να ταξινομηθεί



Φόρτωση...
Μπλουζα