Fehlerbehandlung

Frage: In einer Gespeicherten Prozedur soll eine Fehlerbehandlung implementiert werden. Lösung: Eine Fehlerbehandlung lässt sich mit der globalen Variable @@Error realisieren. Bei jeder SQL-Anweisung wird in dieser Variable die Fehlernummer der Anweisung gespeichert. Tritt kein Fehler auf, ist dies der Wert 0. Aus diesem Grund sollte innerhalb der Fehlerbehandlung der Wert von @@Error immer zuerst … Weiterlesen

Löschen eines Index

Frage: An einer Tabelle soll ein Index gelöscht werden. Mittels sp_helpindex tabelle wurde der Indexname ermittelt. Die Anweisung Drop Index indexname führt jedoch zu einem Fehler. Lösung: Mit Drop Index indexname werden nur Indizes, aber keine Einschränkungen (Constraints) gelöscht. Ob es sich bei dem zu löschenden Index um eine Einschränkung handelt, kann mit der Gespeicherten … Weiterlesen

Auflisten der Benutzertabellen einer Datenbank

Frage: Es soll eine Auflistung der Benutzertabellen erstellt werden. Die Systemtabellen der Datenbank sollen in dieser Liste nicht vorkommen. Lösung: Die Benutzertabellen können mit einer Abfrage auf der Systemtabelle sysobjects mittels Select name From sysobjects Where xtype = ‚u‘ oder über die Schemata mit Select table_name From Information_Schema.Tables ermittelt werden. Microsoft empfiehlt die Schemata zu … Weiterlesen

Datum ohne Zeit aus datetime-Feld

Frage: Eine SELECT-Anweisung mit einem Vergleich einer datetime-Spalte zu einem Datum in der WHERE-Bedingung liefert keine bzw. falsche Ergebnisse. Lösung: Die datetime-Spalte speichert das Datum immer inklusive Uhrzeit und somit wird auch die Uhrzeit mit in den Vergleich einbezogen. Dies kann zu falschen Ergebnissen führen. Wenn nur das Datum verglichen werden soll, muss der Wert … Weiterlesen

Umstellung sqlfaq auf sqlfaq/blog

Die Umstellung der Einträge von www.sqlfaq.de in diesen Block erfolgt nach und nach. Im ersten Schritt werde ich die einzelnen Einträge in den Block kopieren. Dabei wird der eine oder andere Beitrag neu kategorisiert. Im zweiten Schritt möchte ich die Einträge überarbeiten, um von dem Frage-Antwort-Schema wegzukommen. Und last but not least werden auch noch … Weiterlesen

Pivottabellen in SQL Server

Frage: In Access können mittels einer Pivottabelle Zeileninformationen als Spalteninformationen dargestellt werden. Wie kann dies mit SQL Server umgesetzt werden? Lösung: Die Darstellung von Zeileninformationen in Spalten wird mit CASE erreicht. Mehr dazu gibt es in den Online-Hilfe unter CASE sowie unter dem Stichwort Kreuztabellenberichte. /* übernommen aus der Original sqlfaq.de */

InStr

Frage: Gibt es in T-SQL ein Pendant zu InStr, um bestimmte Zeichen innerhalb einer Zeichenfolge zu suchen? Lösung: Die Funktionen charindex und patindex geben die Anfangsposition eines angegebenen Musters zurück. Dabei kann patindex im Gegensatz zu charindex Platzhalterzeichen verwenden. Ein Beispiel: SELECT CHARINDEX(’suchbegriff‘, spaltenname) oder SELECT PATINDEX(‚%suchbegriff%‘, spaltenname) /* übernommen aus der Original sqlfaq.de */

Autowert

Frage: Access bietet die Funktionalität des Autowerts an, durch die in Tabellen fortlaufendene Schlüsselwerte generiert werden. Gibt es diese Funktion auch im SQL Server? Lösung: Im SQL Server wird der Autowert durch die Eigenschaft IDENTITY erstellt. Diese Eigenschaft kann beim Tabellenentwurf für eine Spalte vom Typ Integer oder BigInt mitsamt Startwert und Schrittweite definiert werden. … Weiterlesen

Mid

Frage: Gibt es in T-SQL ein Pendant zu Mid, um einen bestimmten Bereich von Zeichen in einer Zeichenfolge zu ermitteln? Lösung: Der T-SQL-Befehl SUBSTRING(wert, start, length) liefert den über start und length angegebenen Bereich einer Zeichenfolge. /* übernommen aus der Original sqlfaq.de */

Trim

Frage: Gibt es in T-SQL ein Pendant zu Trim, um Leerzeichen aus einer Zeichenfolge zu entfernen? Lösung: Trim gibt es nicht direkt, dafür aber Ltrim und Rtrim. Ltrim entfernt die Leerstellen am Anfang und Rtrim am Ende einer Zeichenfolge. /* übernommen aus der Original sqlfaq.de */