Heim  >  Artikel  >  Datenbank  >  Grundlagen der SQL-Datenoperationen (Mittelstufe) 9

Grundlagen der SQL-Datenoperationen (Mittelstufe) 9

黄舟
黄舟Original
2016-12-17 14:38:20955Durchsuche

Daten konvertieren

SQL Sever ist leistungsstark genug, um bei Bedarf die meisten Werte von einem Typ in einen anderen umzuwandeln. Um beispielsweise die Größen von SMALLINT- und INT-Daten zu vergleichen, müssen Sie keine expliziten Typkonvertierungen durchführen. SQL Sever wird die Arbeit für Sie erledigen. Wenn Sie jedoch zwischen Zeichendaten und anderen Datentypen konvertieren möchten, müssen Sie die Konvertierung selbst durchführen. Angenommen, Sie möchten alle Werte aus einem MONEY-Feld extrahieren und nach dem Ergebnis die Zeichenfolge „US“ hinzufügen. Dollars“. Sie müssen die Funktion CONVERT() wie im folgenden Beispiel gezeigt verwenden:

SELECT CONVERT(CHAR(8),PRice)+’US Dollars’ FROM Die Funktion CONVERT() von Aufträgen

benötigt zwei Variablen. Die erste Variable gibt den Datentyp und die Länge an. Die zweite Variable gibt das zu konvertierende Feld an. In diesem Beispiel wird das Preisfeld in ein CHAR-Feld mit einer Länge von 8 Zeichen umgewandelt. Das Feld „Preis“ muss in einen Zeichentyp umgewandelt werden, bevor die Zeichenfolge „US“ dahinter angeschlossen werden kann. Dollar‘.

Wenn Sie eine Zeichenfolge zu einem BIT-, DATETIME-, INT- oder NUMERIC-Feld hinzufügen, müssen Sie denselben Konvertierungsvorgang durchführen. Die folgende Anweisung fügt beispielsweise die Zeichenfolge „The vote is‘, diese SELECT-Anweisung gibt den Wert eines BIT-Feldes zurück:

SELECT ‚The vote is’+CONVERT(CHAR(1),vote) FROM meinung

Das Folgende ist ein Beispiel für das Ergebnis dieser Aussage:

Die Abstimmung ist 1

Die Stimme ist 1

Die Stimme ist 0

(3 Zeile(n) betroffen)

Wenn Sie keine explizite Konvertierung durchführen, erhalten Sie die folgende Fehlermeldung:

Implizite Konvertierung von Der Datentyp „varchar“ in „bit“ ist nicht zulässig.

Verwenden Sie die Funktion CONVERT, um Führen Sie diese Abfrage aus.

Zeichenfolgendaten bearbeiten

SQL Sever verfügt über viele Funktionen und Ausdrücke, mit denen Sie interessante Operationen an Zeichenfolgen durchführen können, darunter verschiedene Mustervergleiche und Zeichenkonvertierungen. In diesem Abschnitt erfahren Sie, wie Sie die wichtigsten Zeichenfunktionen und Ausdrücke verwenden.

Entspricht Platzhalterzeichen

Angenommen, Sie möchten ein Internetverzeichnis mit ähnlichen Funktionen wie Yahoo erstellen. Sie können eine Tabelle erstellen, die eine Liste mit Site-Namen, Uniform Resource Locators (URLs), Beschreibungen und Kategorien enthält und Besuchern dies ermöglicht Geben Sie Schlüsselwörter in das Formular ein, um diese Inhalte abzurufen.

Angenommen, ein Besucher möchte Informationen aus diesem Verzeichnis erhalten, dessen Beschreibung das Schlüsselwort Handel enthält Eine Liste von Kartenseiten. Um die richtige Liste der Websites abzurufen, können Sie versuchen, eine Abfrage wie diese zu verwenden:

SELECT site_name FROM site_directory WHERE site_desc=’trading card’

Diese Abfrage funktioniert. Es können jedoch nur diejenigen zurückgegeben werden, deren Beschreibung nur „Handel“ enthält Die Seite der String-Karte. Zum Beispiel eine Beschreibung von „Wir haben die größte Sammelkartensammlung der Welt“. Die Websites von World! werden nicht zurückgegeben.

Um eine Zeichenfolge mit einem Teil einer anderen Zeichenfolge abzugleichen, müssen Sie Platzhalterzeichen verwenden. Sie verwenden Platzhalter und das Schlüsselwort LIKE, um den Mustervergleich zu implementieren. Die folgende Anweisung schreibt die obige Abfrage unter Verwendung von Platzhaltern und dem Schlüsselwort LIKE um, um die Namen aller korrekten Websites zurückzugeben:

SELECT SITE_name FROM site_directory

WHERE site_desc LIKE ‚%trading cark%’

In diesem Beispiel werden alle Websites zurückgegeben, deren Beschreibungen den Ausdruck Sammelkarte enthalten. Beschrieben als „Wir haben das Größte“. Die Website „Collection of Trading Cards in the World!“ wurde ebenfalls zurückgegeben. Wenn die Beschreibung einer Website Folgendes enthält, handele ich natürlich Kartons online , wird auch der Name der Site zurückgegeben.

Beachten Sie die Verwendung des Prozentzeichens in diesem Beispiel. Das Prozentzeichen ist ein Beispiel für ein Platzhalterzeichen. Es repräsentiert 0 oder mehr Zeichen. Durch den Handel Die Karte ist in Prozentzeichen eingeschlossen und in allen ist die Handelszeichenfolge eingebettet. Alle Kartenstränge sind übereinstimmend.

Angenommen, Ihr Site-Verzeichnis wird zu groß, um vollständig auf eine Seite zu passen. Sie beschließen, das Verzeichnis in zwei Teile aufzuteilen. Auf der ersten Seite möchten Sie alle Websites anzeigen, deren Initialen mit A bis M beginnen. Auf der zweiten Seite möchten Sie alle Websites anzeigen, deren Anfangsbuchstabe mit N bis Z beginnt. Um die Site-Liste auf der ersten Seite zu erhalten, können Sie die folgende SQL-Anweisung verwenden:

SELECT Site-Name FROM Site-Verzeichnis WHERE Site-Name LIKE „[A-M]%“

In diesem Beispiel wird der Ausdruck [A-M] verwendet, um nur die Websites zu extrahieren, deren Anfangsbuchstaben zwischen A und M liegen. Eckige Klammern ([]) werden verwendet, um ein einzelnes Zeichen innerhalb eines angegebenen Bereichs zu finden. Um die Website auf der zweiten Seite anzuzeigen, verwenden Sie diese Anweisung:

SELECT Site-Name FROM Site-Verzeichnis

WHERE Site-Name LIKE „[N-Z]%“

In diesem Beispiel stellt der Ausdruck in Klammern ein beliebiges einzelnes Zeichen zwischen N und Z dar.

Angenommen, Ihr Site-Verzeichnis ist größer geworden und Sie müssen das Verzeichnis nun in mehrere Seiten aufteilen. Wenn Sie die Seiten anzeigen möchten, die mit A, B oder C beginnen, können Sie dies mit der folgenden Abfrage tun:

SELECT Site-Name FROM Site-Verzeichnis WHERE Site-Name LIKE „[ABC]%“

In diesem Beispiel gibt der Ausdruck in Klammern keinen Bereich mehr an, sondern eine Anzahl von Zeichen. Jede Site, deren Name mit einem dieser Zeichen beginnt, wird zurückgegeben.

Sie können diese beiden Methoden kombinieren, indem Sie sowohl einen Bereich als auch einige angegebene Zeichen in einen Klammerausdruck einfügen. Mit der folgenden Abfrage können Sie beispielsweise Websites abrufen, deren Anfangsbuchstaben zwischen C und F liegen oder mit dem Buchstaben Y beginnen:

SELECT Site-Name FROM Site-Verzeichnis WHERE Site-Name LIKE „[C-FY]%“

In diesem Beispiel werden die Sites mit den Namen Collegescape und Yahoo ausgewählt, aber die Site mit dem Namen Magicw3 wird nicht ausgewählt.

Sie können auch das Caretzeichen (^) verwenden, um bestimmte Zeichen auszuschließen. Um beispielsweise die Websites abzurufen, deren Namen nicht mit Y beginnen, können Sie die folgende Abfrage verwenden:

SELECT Site-Name FROM Site-Verzeichnis WHERE Site-Name LIKE ‘[^Y]%’

Das Caretzeichen kann für ein bestimmtes Zeichen oder einen bestimmten Zeichenbereich verwendet werden.

Schließlich können Sie jedes einzelne Zeichen mit dem Unterstrich (_) zuordnen. Die folgende Abfrage gibt beispielsweise jede Site zurück, deren Name einen beliebigen Buchstaben als zweites Zeichen enthält:

SELECT Site-Name FROM Site-Verzeichnis WHERE Site-Name LIKE „M_crosoft“

Dieses Beispiel gibt sowohl eine Site namens Microsoft als auch eine Site namens Macrosoft zurück. Websites mit dem Namen Moocrosoft werden jedoch nicht zurückgegeben. Im Gegensatz zum Platzhalterzeichen „%“ stellt der Unterstrich nur ein einzelnes Zeichen dar.

Hinweis:

Wenn Sie die Prozent- oder Unterstrichzeichen selbst anpassen möchten, müssen Sie sie in eckige Klammern setzen. Wenn Sie einen Bindestrich (-) finden möchten, geben Sie ihn als erstes Zeichen in eckigen Klammern an. Wenn Sie eckige Klammern anpassen möchten, schließen Sie diese ebenfalls in eckige Klammern ein. Die folgende Anweisung gibt beispielsweise alle Websites zurück, deren Beschreibung ein Prozentzeichen enthält:

SELECT site_name FROM site_directory WHERE site_desc LIKE „%[%]%“

Übereinstimmende Aussprache

Microsoft SQL Es gibt zwei Funktionen, mit denen Sie Zeichenfolgen phonetisch zuordnen können. Die Funktion SOUNDEX() weist einer Zeichenfolge einen phonetischen Symbolcode zu und die Funktion DIFFERENCE() vergleicht zwei Zeichenfolgen anhand ihrer Aussprache. Wenn Sie die genaue Schreibweise eines Namens nicht kennen, aber eine Vorstellung von seiner Aussprache haben, können Sie mit diesen beiden Funktionen den Datensatz abrufen.

Wenn Sie beispielsweise ein Internetverzeichnis erstellen, möchten Sie möglicherweise eine Option hinzufügen, die es Besuchern ermöglicht, nach Websites anhand der Aussprache ihres Namens und nicht anhand der Schreibweise des Namens zu suchen. Betrachten Sie die folgende Anweisung:

SELECT Site-Name FROM Site-Verzeichnis

WHERE DIFFERENCE(Site-Name , „Microsoft“>3

Diese Anweisung verwendet die Funktion DEFFERENCE(), um Websites abzurufen, deren Namen Microsoft sehr ähnlich klingen. Die Funktion DIFFERENCE() gibt eine Zahl zwischen 0 und 4 zurück. Wenn die Funktion 4 zurückgibt, bedeutet dies, dass die Aussprache sehr ähnlich ist. Wenn die Funktion 0 zurückgibt, bedeutet dies, dass die Aussprache der beiden Zeichenfolgen sehr unterschiedlich ist.

Zum Beispiel gibt die obige Anweisung die Site-Namen Microsoft und Macrosoft zurück. Die Aussprache beider Namen ähnelt der von Microsoft. Wenn Sie in der vorherigen Anweisung „größer als 3“ in „größer als 2“ ändern, werden auch Sites mit den Namen Zicrosoft und Megasoft zurückgegeben. Wenn Sie schließlich nur eine Differenzstufe größer als 1 benötigen, werden auch Websites mit den Namen Picosoft und Minisoft abgeglichen.

Um mehr über die Funktionsweise der Funktion DIFFERENCE() zu erfahren, können Sie die Funktion SOUNDEX() verwenden, um den phonetischen Code zurückzugeben, der von der Funktion DIFFERENCE() verwendet wird. Hier ist ein Beispiel:

SELECT site_name ‘site name’,SOUNDEX(site_name) ‘sounds like’

Diese Anweisung wählt alle Daten im Feld site_name und seinen phonetischen Symbolcode aus. Hier sind die Ergebnisse dieser Abfrage:

Site-Name klingt wie

……………………………………………………………….

Yahoo Y000

Mahoo M000

Microsoft M262

Macrosoft M262

Minisoft M521

Microshott M262

Zicrosoft Z262

Zaposoft Z121

Millisoft M421

Nanosoft N521

Megasoft M221

Picosoft P221

(12 Reihe(n) betroffen)

Wenn Sie sich den phonetischen Symbolcode genau ansehen, werden Sie feststellen, dass der erste Buchstabe des phonetischen Symbolcodes mit dem ersten Buchstaben des Feldwerts übereinstimmt. Beispielsweise unterscheiden sich die phonetischen Symbole von Yahoo und Mahoo nur im Anfangsbuchstaben. Sie können auch feststellen, dass die phonetischen Symbole von Microsoft und Macrosoft genau gleich sind.

Funktion DIFFERENDE() vergleicht den ersten Buchstaben und alle Konsonanten zweier Zeichenfolgen. Diese Funktion ignoriert alle Vokale (einschließlich y), es sei denn, ein Vokal ist der erste Buchstabe einer Zeichenfolge.

Leider gibt es einen Nachteil bei der Verwendung von SOUNDEX() und DIFFERENCE(). Abfragen, die diese beiden Funktionen in der WHERE-Klausel enthalten, weisen keine gute Leistung auf. Daher sollten Sie diese beiden Funktionen mit Vorsicht verwenden.

Leerzeichen entfernen

Es gibt zwei Funktionen, TTRIM() und LTRIM(), die zum Entfernen von Leerzeichen aus Zeichenfolgen verwendet werden können. Die Funktion LTRIM() entfernt alle Leerzeichen am Anfang einer Zeichenfolge; die Funktion RTRIM() entfernt alle Leerzeichen am Ende einer Zeichenfolge. Hier ist ein Beispiel für die Verwendung der Funktion RTRIM():

WÄHLEN RTRIM(site_name) FROM Site-Verzeichnis

Wenn in diesem Beispiel ein Site-Name am Ende zusätzliche Leerzeichen enthält, werden die zusätzlichen Leerzeichen aus den Abfrageergebnissen entfernt.

Sie können diese beiden Funktionen verschachteln, um die Leerzeichen vor und nach einer Zeichenfolge gleichzeitig zu löschen:

SELECT LTRIM(RTRIM(site_name) FROM site_directory

Sie werden diese beiden Funktionen sehr nützlich finden, wenn Sie zusätzliche Leerzeichen aus Feldern vom Typ CHAR entfernen. Denken Sie daran: Wenn Sie eine Zeichenfolge in einem CHAR-Feld speichern, werden an die Zeichenfolge zusätzliche Leerzeichen angehängt, um der Länge des Felds zu entsprechen. Mit diesen beiden Funktionen können Sie unnötige Leerzeichen entfernen und so dieses Problem lösen.

Das Obige ist der Inhalt von SQL Data Operation Basics (Intermediate) 9. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn