Spaltenwerte als kommaseparierte Liste zurückgeben
Sep 21st
Wie so oft mag man sich fragen, ob dies eher die Aufgabe des Clients als die des Server ist, aber da man häufig derartige Fragestellungen beobachten kann, hier an dieser Stelle vielleicht ein paar Lösungsansätze zu folgendem Problem: mehr »
Best Practice für Log Files
Sep 16th
Zweiter Beitrag in der "Best Practice" Serie. Gleichzeitig ein Thema, wo große Unsicherheit herrscht. Aber gerade DBA's sollten das Konzept des Transaktionsprotokolls unbedingt verstehen.
Dieser Beitrag geht auf ein Posting von Jonathan van Houtte… mehr »
DBCC PAGE verwenden
Sep 10th
Durch den DBCC PAGE Befehl kann man sich den Inhalt jeder Daten- und Indexseite in SQL Server ansehen. Die Verwendung des Befehls ist aber mit einigen Stolperfallen verbunden, die im folgenden erklärt werden sollen. Beispielhaft verwenden wir mal die… mehr »
Best practice für Indexes
Sep 10th
Dies ist der Anfang einer Reihe von "Best Practice" Beiträgen. Mehr noch als bei anderen Beiträgen würde ich mir hier Feedback wünschen, das dann in den Beitrag einfließen kann. Ziel soll es sein, einen Rahmen zu bilden mit allgemein anerkannten… mehr »
Muss man T-SQL Variablen explizit aufräumen
Sep 7th
Nun, so etwas wie Set < variable > = Nothing oder ein Äquivalent in einer anderen Programmiersprache gibt es in T-SQL nicht. T-SQL Variablen sind nur lokal im Batch oder in einer Gespeicherten Prozedur gültig, in der sie definiert wurden.… mehr »
IP-Adressen sortieren
Sep 6th
Nun, grundsätzlich würde ich wahrscheinlich eher zu einem anderen Datentyp als VARCHAR tendieren, um IP Adressen zu speichern, aber dennoch fand ich diese "Koproduktion" der beiden SQL Server MVP's Steve Kass und Itzik Ben-Gan in der englischen… mehr »
Summenwert einer Reihe
Aug 18th
Dies ist ein beliebtes Beispiel für Informatikstudenten im Anfangsstadium, um die Auswirkungen effizienter Algorithmen zu demonstrieren. Also auch hier nicht unbedingt etwas, was man zwingend in einer Datenbank machen müßte, das sich aber durchaus… mehr »
Binärzahl in Dezimalzahl umwandeln
Aug 18th
Normalerweise würde man solche Fragestellungen. welcher Dezimalzahl nun 1011001 entspricht, damit beantworten, in dem man auf den Client verweist. Was aber, wenn man einfach wissen will, wie so etwas in T-SQL aussehen könnte? Ob man es dann später… mehr »
Unterschiede zwischen MONEY und DECIMAL
Aug 16th
SQL Server MVP Steve Kass hat dieses Beispiel in den englischen Newsgroups gepostet. Es zeigt, daß der Einsatz der Datentypen zur Speicherung monetärer Daten sorgfältig durchdacht sein sollte. Man sollte stets bedenken, welche Operationen mit diesen… mehr »
Determinismus von CHARINDEX und PATINDEX
Aug 12th
In BOL werden CHARINDEX() und PATINDEX() als nichtdeterministische Stringfunktionen aufgelistet. Warum eigentlich? Man sollte meinen, das ceteris paribus auch bei diesen Funktionen stets ein identisches Ergebnis herauskommt. Richtig, und gleichzeitig… mehr »
Daten aus Excel abfragen
Aug 10th
In fast allen Online Communities sieht man solche Fragen mit schöner Regelmässigkeit auftauchen. Die vielleicht einfachste Methode, diese Daten abzufragen, besteht in der Verwendung von OPENROWSET: mehr »
Zahl rechts-oder linksbündig mit 0 formatieren
Aug 9th
Die Präsentation von Informationen aus der Datenbank ist imho eher Sache des Clients als die des Servers. Solche Aufgaben gehören zum Handswerkzeug jedes Front-End und sind dort schnell und einfach erledigt.
Falls jedoch, aus welchen Gründen auch immer,… mehr »
N-te Wurzel einer Zahl
Aug 3rd
Tja, wieder so ein Beispiel, dass man mal in der Schule gelernt hat, aber immer genau dann vergisst, wenn man es braucht.
DECLARE @My1 FLOAT
DECLARE @My2 FLOAT
SELECT @My1 = 16, @My2 = 4
SELECT POWER(@My1, 1/@My2)… mehr »
Kleinste gemeinsame Vielfache zweier Zahlen
Aug 3rd
CREATE FUNCTION dbo.kgv(@zahl1 int, @zahl2 int )
RETURNS INT
AS
BEGIN
RETURN (@zahl1 * @zahl2) / dbo.ggt(@zahl1, @zahl2)
END
GO
SELECT dbo.kgv(24,36)
DROP FUNCTION dbo.kgv
-----------
72
(1 row(s) affected)
Der Vollständigkeit… mehr »
Größte gemeinsame Teiler zweier Zahlen
Aug 3rd
Dies ist die Adaption der Excel Funktion GGT().
CREATE FUNCTION dbo.ggt(@zahl1 int, @zahl2 int) RETURNS INT AS BEGIN DECLARE @zahl3 INT SET @zahl3=1 WHILE (@zahl3 <> 0) BEGIN SET @zahl3=@zahl1 % @zahl2 SET @zahl1=@zahl2… mehr »
Dynamisches SQL innerhalb einer Funktion
Aug 2nd
Dynamisches SQL kann nicht innerhalb einer Funktion ausgeführt werden. Genausowenig können Stored Procedures aufgerufen werden. Der einzige Workaround hier ist, eine andere Logik anzuwenden, um um den dynamischen Teil herumzukommen. So führt z.B.… mehr »
Sequentielle Nummerierung eines Resultsets
Aug 2nd
Eine beliebte Frage mit unzähligen Antworten. Meine Lieblingsantwort darauf ist, dies in der Präsentationsschicht seiner Anwendung zu machen. IMHO ist dies Aufgabe des Clients, nicht des Servers. Wenn es aber unbedingt in T-SQL gemacht werden soll, kann… mehr »
sp_spaceused in Tabelle unleiten
Jul 29th
USE PUBS
GO
SET NOCOUNT ON
CREATE TABLE #TableSpace
(
Name char(20)
,RowCnt int
,Reserved varchar(15)
,Data varchar(15)
,Index_Size varchar(15)
,Unused varchar(15)
)
DECLARE @Table sysname
DECLARE TableCur
CURSOR FOR
SELECT
Table_Name
FROM… mehr »
Fakultät einer Zahl
Jul 26th
CREATE FUNCTION dbo.fakultät(@n DECIMAL(38,0)) RETURNS DECIMAL(38,0) AS BEGIN DECLARE @tmp DECIMAL(38,0) IF (@n <= 1) SELECT @tmp = 1 ELSE SELECT @tmp = @n * dbo.fakultät(@n - 1) RETURN @tmp END GO SELECT… mehr »
Steigung einer Geraden
Jul 26th
DECLARE @x1 FLOAT DECLARE @x2 FLOAT DECLARE @y1 FLOAT DECLARE @y2 FLOAT SELECT @x1 = 1, @x2 = 2, @y1 = 1, @y2 = 2 SELECT (@y2-@y1)/(@x2-@x1) -----------------------------------------------------… mehr »
Der hyperbolische Tangens
Jul 22nd
Sozusagen als krönender Abschluss meines Exkurses in die Statistik, hier ein Skript zur Berechnung des hyperbolischen Tangens:
DECLARE @sinhyp FLOAT DECLARE @coshyp FLOAT SELECT @sinhyp=0.5, @coshyp=0.5 SELECT ((POWER(EXP(1),@sinhyp) -… mehr »
Der hyperbolische Cosinus
Jul 22nd
Dies ist die Adaption der Excel Funktion COSHYP()DECLARE @coshyp FLOATSET @coshyp=1SELECT (POWER(EXP(1),@coshyp) + POWER(EXP(1),-@coshyp) )/2 ----------------------------------------------------- 1… mehr »
Der hyperbolische Sinus
Jul 22nd
DECLARE @sinhyp FLOATSET @sinhyp = 1SELECT (POWER(EXP(1),@sinhyp) - POWER(EXP(1),-@sinhyp))/2 ----------------------------------------------------- 1.1752011936438014(1 row(s) affected) Die Variante… mehr »