Vedremo in questo articolo qualche query di esempio: query per il confronto tra date, query che coinvolgono colonne con contenuto XML, ...
Query Delete By Date
Vediamo come fare una delete per eliminare tutti i record antecedenti ad una certa data fissa:
USE [MyDB]
GO
DELETE FROM [dbo].[MyTable]
WHERE CreationDate < CAST('20190201 00:00:00.000' AS DATETIME)
GO
Query Update Date
Vediamo come fare una query di update per settare tutte le date di una tabella ad un valore fisso:
USE [MyDB]
GO
UPDATE [dbo].[MyTable]
SET [UpdateDate] = CAST('20180101 00:00:00.000' AS DATETIME)
GO
Query On XML Column
Vediamo questa semplice query:
select *
from MyTable
where xmlColumn like '%<myNode>2</myNode>%'
Se provate ad eseguire questa query sicuramente avrete il seguente errore:
Argument data type xml is invalid for argument 1 of like function
Questo perché se nella colonna xmlColumn ci sta del testo in formato XML la precedente sintassi genera un errore.
L'unico modo per eseguire una query di questo tipo è il seguente:
select *
from MyTable
where CAST(xmlColumn AS nvarchar(max)) LIKE N'%<myNode>8</myNode>%'
Ovvero la colonna deve essere prima convertita in testo e poi si esegue la query.
Se ci sono problemi nell'estrazione di contenuti XML troppo grandi inserire il seguente codice alla fine della query:
for xml path
Ad esempio:
select xmlColumn
from MyTable
where CAST(xmlColumn AS nvarchar(max)) LIKE N'%<myNode>8</myNode>%'
for xml path
Conversione in GUID direttamente con SQL
Vediamo questa semplice istruzione per convertire un numero in GUID direttamente in SQL:
cast(CONVERT(BINARY(16), (CONVERT(BINARY(16), numeroDaConvertire))) as uniqueidentifier)
Buon lavoro!