Ce înseamnă semnul cu număr dublu ## în SQL?

O meta post oferă un fragment frumos de 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 

Ce înseamnă semnul cu număr dublu ## acolo?

Cred că acesta este un fel de sintaxă șir, dar nici nu pot ghici un cuvânt cheie pentru asta. googling „număr semn ## în SQL” returnează „tabele temporare prefix” , care este nu este cazul.

Răspuns

## înconjoară un parametru de interogare în Stack Exchange Data Explorer (SEDE).

Porțiunea de după ? este valoarea implicită afișată valoarea parametrului.

Din Tutorial SEDE scris de Monica Cellio:

Notă: sintaxa particulară utilizată pentru parametri este specifică SEDE. Tot ceea ce am spus până acum despre SQL este adevărat pentru toate gusturile SQL; acest lucru este diferit.

Așa cum se arată în această interogare, vă referiți la un parametru înconjurând numele acestuia cu semne de lire dublate, cum ar fi ## MinScore ##. Opțional, puteți specifica tipul de date (int (un număr întreg), float (un număr cu o valoare zecimală, cum ar fi 2.5) sau șir): ## MinScore: int ##. Dacă specificați un tastați atunci SEDE va valida valorile față de acel tip, astfel încât, dacă așteptați un număr pentru scor și cineva să tastați " unicorn " interogarea nu va fi executată. Dacă nu specificați un tip, interogarea dvs. poate primi intrări neașteptate.


## nu are nicio semnificație în SQL standard. Deși nu este cazul aici, este utilizat în Transact-SQL ca prefix pentru a identifica un obiect temporar global:

Reguli pentru identificatorii obișnuiți

Un identificator care începe cu un semn numeric denotă un tabel temporar sau o procedură. Un identificator care începe cu semne cu număr dublu (##) denotă un obiect temporar global. Deși semnele numerice sau semnele cu număr dublu pot fi folosite pentru a începe numele altor tipuri de obiecte, nu recomandăm această practică.

Comentarii

  • Ar putea fi demn de remarcat faptul că ați folosi un tabel temporar global în SQL Server atunci când trebuie să creați un tabel temporar care trebuie accesat de mai multe sesiuni diferite, dar permanent tabelul nu este ideal.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *