Beispiel "Abhängige Ausgabe mittels 'CASE'":
SELECT
AAA as [A],
CASE WHEN len(B) = 0 THEN 0 ELSE 1 END as [B],
FROM ..
Beispiel "Eine Tabellenspalte auf NOT NULL setzen":
ALTER TABLE [dbo].[tblCdbI0] ALTER COLUMN [I56RID] char(32) NOT NULL
Natürlich muss vorab sicher gestellt werden, dass sich in der entsprechenden Spalte kein NULL-Wert befindet!
Auto-Increment-Spalte einer Tabelle wieder zurücksetzen:
DBCC CHECKIDENT(‘[DB].[dbo].[tabelle]‘, RESEED, 0)
Hinweis: Bei Anwendung dieses Befehls muss sichergestellt werden, dass es zu keiner Kollision innerhalb der Spalte kommt (doppelte Vergabe derselben Zahl).
Zu beachten sind ebenfalls eventuelle Referenzen auf andre Tabellen.
Beispiel:
SET @Identity= IDENT_CURRENT('db.dbo.mytable')
IF (@Identity > 1500000)
DBCC CHECKIDENT ('db.dbo.mytable', RESEED, 0)
Beispiel "Eine Tabellenspalte vom Typ XML auf einen vorhandenen Node prüfen":
(MyColumn.exist('/MyNode') = 1)
Beispiel "Einen bestimmten Text in der Datenbank suchen":
SELECT
o.type_desc AS ROUTINE_TYPE
,o.[name] AS ROUTINE_NAME
,m.definition AS ROUTINE_DEFINITION
FROM
sys.sql_modules AS m
INNER JOIN sys.objects AS o ON m.object_id = o.object_id
WHERE
m.definition LIKE '%Filter%'
Beispiel "Suchen nach doppelten Einträgen":
SELECT
COUNT(*) AS Zähler, Title, TelNr, DateCreated
FROM
be_Posts
GROUP BY
Title, TelNr, DateCreated
HAVING
( COUNT(*) > 1 )
Beispiel "Suchen nach doppelten Einträgen":
SELECT
Id, Vorname, Nachname, Vorwahl, Telefon
FROM
tblData
WHERE EXISTS (
SELECT Id FROM tblData Dup WHERE tblData.Vorwahl = Dup.Vorwahl AND tblData.Telefon = Dup.Telefon AND tblData.Id <> Dup.Id)
ORDER BY Nachname
Beispiel "Löschen von doppelten Einträgen - Ein Eintrag bleibt erhalten":
CREATE TABLE #TBLResult (ID int IDENTITY (1, 1) Primary key NOT NULL, G0RID varchar(32) , FraRID varchar(32) )
... insert Data in the table
DELETE FROM
#TBLResult
WHERE ID in (
SELECT Dup.ID
FROM #TBLResult A , #TBLResult Dup
WHERE A.I0RID = Dup.I0RID AND A.ID < Dup.ID);
Beispiel "Update / Insert":
DECLARE @RowExists bit = 0
UPDATE MyTable SET DataField1 = 'xxx', @RowExists = 1 WHERE Key = 123
IF @RowExists = 0
INSERT INTO MyTable (Key, DataField1) VALUES (123, 'xxx')
Siehe auch : http://stackoverflow.com/questions/108403/solutions-for-insert-or-update-on-sql-server
Lesen ohnen Schreibblockaden zu berücksichtigen:
Select / from tblABC with (nolock) where ...
Recovery auf SIMPLE setzen:
ALTER DATABASE TVStat SET RECOVERY SIMPLE
Rekursives Select:
declare @tblTagRID table(M41RID char(32) primary key)
;WITH CTE as
(
-- Anchor member definition
SELECT e.M41RID, e.M41Roo
FROM @XmlData.nodes('/*/Parameters/Tags/Tag') XmlData([Tag])
inner join tblCDbM41 e with (nolock) on e.M41RID = XmlData.[Tag].value('@RID','char(32)')
UNION ALL
-- Recursive member definition
SELECT e.M41RID, e.M41Roo
FROM tblCDbM41 AS e
Inner join CTE x on x.M41RID = e.M41Roo
)
Insert into @tblTagRID(M41RID)
SELECT M41RID FROM CTE