Vad betyder dubbelnummer ## i SQL?

En meta-inlägg ger ett snyggt utdrag av 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 

Vad betyder dubbelnummer ## där inne?

Jag antar att det är någon form av strängsyntax, men jag kan inte ens gissa ett nyckelord för det. googling ”nummertecken ## i SQL” returnerar ”prefix temporära tabeller” , vilket är inte fallet.

Svar

## omger en frågeparameter i Stack Exchange Data Explorer (SEDE).

Delen efter ? är den standard som visas parametervärde.

Från SEDE-handledning skriven av Monica Cellio:

Obs: den specifika syntax som används för parametrar är specifik för SEDE. Allt vi hittills har sagt om SQL gäller för alla SQL-smaker. Detta är annorlunda.

Som visas i denna fråga hänvisar du till en parameter genom att omge dess namn med dubbla pundtecken, som t.ex. ## MinScore ##. Valfritt kan du ange datatyp (int (ett heltal), float (ett tal med ett decimalvärde, som 2,5) eller sträng): ## MinScore: int ##. Om du anger en typ kommer SEDE att validera värden mot den typen, så att om du förväntar dig ett nummer för poäng och någon skriver " enhörning " frågan vann inte. Om du inte anger en typ kan din fråga få oväntade ingångar.


## har ingen betydelse i standard SQL. Även om det inte är fallet här, används det i Transact-SQL som ett prefix för att identifiera ett globalt tillfälligt objekt:

Regler för vanliga identifierare

En identifierare som börjar med ett nummertecken anger en tillfällig tabell eller procedur. En identifierare som börjar med dubbla siffertecken (##) anger ett globalt tillfälligt objekt. Även om nummertecken eller dubbeltalstecken kan användas för att börja namnen på andra typer av objekt, rekommenderar vi inte denna metod.

Kommentarer

  • Det kan vara värt att notera att du skulle använda en global tillfällig tabell i SQL Server när du behöver skapa en tillfällig tabell som måste nås av flera olika sessioner, men en permanent tabellen är inte perfekt.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *