SELECT-Statement mit variablem Tabellennamen

Frage: In einer SELECT-Anweisung soll der Tabellenname durch eine lokale Variable ersetzt werden. Lösung: In SQL-Anweisungen lassen Variablen sich zwar in Ausdrücken, nicht aber anstelle von Objektnamen oder Schlüsselwörtern verwenden. Um den Tabellennamen in einer SQL-Anweisung erst bei der Ausführung zu ersetzen, muss mit dynamischem SQL gearbeitet werden. Dazu wird das SQL-Statement bei der Ausführung … Weiterlesen

RAISERROR

Frage: Trotz Auslösen eines RAISERROR mit Schweregrad 16 wird die Gespeicherte Prozedur nicht fehlerhaft beendet. Lösung: Der Schweregrad 16 beendet eine Gespeicherte Prozedur nur dann, wenn auch wirklich ein Fehler eingetreten ist. RAISERROR löst keinen Fehler aus, sondern belegt lediglich den @@ERROR-Wert mit der angegebenen Fehlernummer. Folgendes Skript soll das Verhalten von RAISERROR verdeutlichen: PRINT … Weiterlesen

Daten skripten

Frage: Die Daten einiger Tabellen sollen als INSERT-Statements in eine Textdatei exportiert werden. Lösung: itrain bietet ein Skript an, mit dem solche INSERT-Statements erzeugt werden können. /* übernommen aus der Original sqlfaq.de */

Zeichen in String zählen

Frage: Gibt es eine Möglichkeit per SQL bestimmte Zeichen in einer Zeichenfolge zu zählen? Lösung: Eine Möglichkeit, vorgestellt von Josef Pötzl: Len(‚avcdafra‚) – Len(Replace(‚avcdafra‚,‘a‚,“)) /* übernommen aus der Original sqlfaq.de */

Registry auslesen

Frage: Per T-SQL sollen Werte aus der Registry gelesen werden. Lösung: Es gibt eine undokumentierte Gespeicherte Prozedur in der Datenbank master namens dbo.xp_regread mit den Parametern Rootkey, Path und Value. Hier ein kleines Beispiel: DECLARE @bla varchar(10) exec master.dbo.xp_regread @rootkey=’HKEY_LOCAL_MACHINE‘, @key=’SOFTWARE\…..‘, @value_name=’wert‘, @inhalt=@inhalt OUTPUT /* übernommen aus der Original sqlfaq.de */

Spalten eines Index ermitteln

Frage: Die Spalten eines Index sollen ermittelt werden. Lösung: Hier hilft die Gespeicherte Prozedur sp_helpindex ‚deineTabelle‚. /* übernommen aus der Original sqlfaq.de */

Integer-Wert mit führenden Nullen

Frage: Ein Integer-Wert soll mit führenden Nullen ausgegeben werden. Lösung: Eine Kombination der Befehle STR und REPLACE liefert den Integer-Wert mit führenden Nullen als String zurück. Folgendes Beispiel liefert „000001“: DECLARE @a INT SET @a = 1 SELECT REPLACE(STR(@a,6),‘ ‚,0) /* übernommen aus der Original sqlfaq.de */

Vergleich von Datumswerten ohne Uhrzeit

Frage: Das Datum zweier Spalten vom Datentyp datetime soll ohne Uhrzeit verglichen werden. Lösung: Für einen solchen Vergleich muss der Inhalt der datetime-Spalte in eine Spalte vom Datentyp varchar(10) konvertiert werden: convert(varchar(10), meindatum, 112) = convert(varchar(10), meinanderesdatum, 112) /* übernommen aus der Original sqlfaq.de */

Aktuelles Alter ermittlen

Frage: Anhand eines Geburtsdatums soll das aktuelle Alter ermittelt werden. Lösung: Beispiele gibt es unter http://www.insidesql.org/blogs/frankkalis/2004/07/13/das-alter-einer-person und http://www.insidesql.org/blogs/frankkalis/2004/07/13/das-alter-einer-person-1. /* übernommen aus der Original sqlfaq.de */

Prüfung, ob Feld in Tabelle existiert

Frage: Per T-SQL soll geprüft werden, ob ein Feld in einer Tabelle existiert. Lösung: Diese Prüfung lässt sich über die Schematas lösen. If Exists (Select * From Information_Schema.Columns Where Table_Name = ‚tabellenname‚ And Column_Name = ‚spaltenname‚) Select ‚Feld vorhanden‘ Else Select ‚Feld nicht vorhanden‘ Vielen Dank für diesen Beitrag an Thomas Fischer. /* übernommen aus … Weiterlesen