Home
MICROSOFT SQL SERVER: tutorial and sample query

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)

 

Query per conoscere le colonne con Always Encrypted sul DB

La seguente query estrae l'elenco delle tabelle e delle colonne che hanno abilitato l'Always Encrypted:

select 
    t.name as [Table],
    c.name as [Column], 
    c.encryption_type_desc
from   
    sys.all_columns c inner join
    sys.tables t on c.object_id = t.object_id
where  
    c.encryption_type is not null 
order by
    t.name,
    c.name

 

Conversione SQL to GUID

select cast(CONVERT(BINARY(16), (CONVERT(BINARY(16), myFieldInteger))) as myFieldIntegerConvertedGUID),
myFieldInteger
from MyTable
where id='xxx'

 

Buon lavoro!

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.