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.