Hvad betyder dobbelt talskilt ## i SQL?

Et meta-indlæg giver et flot stykke 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 

Hvad betyder dobbelt taltegn ## derinde?

Jeg tror det er en slags strengsyntaks, men jeg kan ikke engang gætte et nøgleord til det. googling “nummertegn ## i SQL” returnerer “præfiks midlertidige tabeller” , hvilket er ikke tilfældet.

Svar

## omgiver en forespørgselsparameter i Stack Exchange Data Explorer (SEDE).

Delen efter ? er den viste standard parameterværdi.

Fra SEDE-tutorial skrevet af Monica Cellio:

Bemærk: den bestemte syntaks, der bruges til parametre, er specifik for SEDE. Alt, hvad vi hidtil har sagt om SQL, gælder for alle varianter af SQL; dette er anderledes.

Som vist i denne forespørgsel henviser du til en parameter ved at omslutte dens navn med fordoblede pundtegn, såsom ## MinScore ##. Valgfrit kan du angive datatypen (int (et helt tal), float (et tal med en decimalværdi som 2,5) eller en streng): ## MinScore: int ##. Hvis du angiver en skriv så SEDE validerer værdier i forhold til den type, så hvis du “forventer et tal for score, og nogen skriver " enhjørning " forespørgsel vandt ikke. Hvis du ikke angiver en type, kan din forespørgsel muligvis modtage uventede input.


## har ingen betydning i standard SQL. Selvom det ikke er tilfældet her, bruges det i Transact-SQL som et præfiks til at identificere et globalt midlertidigt objekt:

Regler for almindelige identifikatorer

En identifikator, der starter med et taltegn, angiver en midlertidig tabel eller procedure. En identifikator, der starter med dobbelt taltegn (##), angiver et globalt midlertidigt objekt. Selvom taltegnet eller dobbelttegnetegnene kan bruges til at begynde navnene på andre typer objekter, anbefaler vi ikke denne praksis.

Kommentarer

  • Det kan være værd at bemærke, at du bruger en global midlertidig tabel i SQL Server, når du har brug for at oprette en midlertidig tabel, der skal tilgås af flere forskellige sessioner, men en permanent tabellen er ikke ideel.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *