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

case-sensitiver Vergleich von Zeichenfolgen

Frage: Per T-SQL sollen Zeichenfolgen Case-Sensitiv verglichen werden. Lösung: Der Vergleich wird über die Erweiterung der WHERE-Bedingung mit der COLLATE-Anweisung möglich. Ein Beispiel: WHERE SpalteA = SpalteB COLLATE Latin1_General_CS_AS /* übernommen aus der Original sqlfaq.de */

Dezimaltrennzeichen als Komma im String

Frage: Gleitkommazahlen in varchar-Spalten sollen in den Datentyp money konvertiert werden. Wegen dem Dezimaltrennzeichen werden die Zahlen jedoch nicht korrekt konvertiert. So wird z.B. aus der Zahl 123,45 die Zahl 12345,00. Wie kann eine korrekte Konvertierung erreicht werden? Lösung: Da gibt es zwei Möglichkeiten: SELECT CAST(REPLACE(zahl,‘,‘,‘.‘) AS DECIMAL(8,2)) oder SELECT CAST(REPLACE(REPLACE(zahl,‘.‘,“),‘,‘,‘.‘) AS DECIMAL(8,2)) Vielen Dank … Weiterlesen

Zahl mit führenden Nullen ausgeben

Frage: Eine einstellige Zahl soll mit führenden Nullen angezeigt werden. Lösung: Für eine solche Ausgabe muss die Zahl in einen String konvertiert und dieser mit den führenden Nullen ergänzt werden. Beispiel mit einem Datum: declare @Datum datetime set @datum = ‚20040101‘ select right(’00‘ + convert(varchar(2),day(@Datum)),2) Beispiel mit einer Zahl: declare @Zahl int set @Zahl = … Weiterlesen

Auflistung der Datenbanken

Frage: Die Datenbanken einer SQL Server-Installation sollen aufgelistet werden. Lösung: Eine solche Auflistung kann mit der SQL-Anweisung Select name From master..sysdatabases oder über eine Auswertung der Schemata mit Select catalog_name From Information_Schema.Schemata erfolgen. Microsoft empfiehlt die Schemata zu nutzen, da sich die Systemtabellen in Zukunft ändern könnten. /* übernommen aus der Original sqlfaq.de */