Un meta post fornisce un bel frammento di SQL
declare @search nvarchar(max) = ##searchfor:string?carefully %listen## select id [Post Link] , score , creationdate , lastactivitydate , closeddate , owneruserid as [User Link] from posts where body like concat("%", @search, "%") collate SQL_Latin1_General_CP1_CI_AI or title like concat("%", @search, "%") collate SQL_Latin1_General_CP1_CI_AI
Cosa significa il simbolo del doppio numero ##?
Immagino che sia una sorta di sintassi delle stringhe, ma non riesco nemmeno a indovinare una parola chiave per questo. googling “number sign ## in SQL” restituisce “prefisso tabelle temporanee” , che è non è il caso.
Risposta
##
racchiude un parametro di ricerca nel Stack Exchange Data Explorer (SEDE).
La parte dopo ?
è limpostazione predefinita visualizzata valore del parametro.
Dal SEDE Tutorial scritto da Monica Cellio:
Nota: la particolare sintassi utilizzata per i parametri è specifica di SEDE. Tutto ciò che abbiamo detto finora su SQL è vero per tutte le versioni di SQL; questo è diverso.
Come mostrato in questa query, fai riferimento a un parametro racchiudendo il suo nome con il doppio cancelletto, come ## MinScore ##. Opzionalmente puoi specificare il tipo di dati (int (un numero intero), float (un numero con un valore decimale, come 2.5) o stringa): ## MinScore: int ##. Se specifichi un type, SEDE convaliderà i valori rispetto a quel tipo, in modo che se “ti aspetti un numero per il punteggio e qualcuno digita " unicorn " il la query non viene eseguita. Se non specifichi un tipo, la query potrebbe ricevere input imprevisti.
##
non ha alcun significato nellSQL standard. Sebbene non sia il caso qui, viene utilizzato in Transact-SQL come prefisso per identificare un oggetto temporaneo globale:
Regole per identificatori regolari
Un identificatore che inizia con un segno di numero denota una tabella o procedura temporanea. Un identificatore che inizia con il doppio segno numerico (##) denota un oggetto temporaneo globale. Sebbene il segno del numero o il doppio segno del numero possano essere usati per iniziare i nomi di altri tipi di oggetti, non consigliamo questa pratica.
Commenti
- Potrebbe valere la pena notare che utilizzeresti una tabella temporanea globale in SQL Server quando devi creare una tabella temporanea a cui deve accedere più sessioni diverse, ma un permanente table non è lideale.