Hva betyr dobbelt talltegn ## i SQL?

Et meta innlegg gir et fint 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 

Hva betyr dobbelt talltegn ## der inne?

Jeg antar at det er en slags strengsyntaks, men jeg kan ikke engang gjette et nøkkelord for det. googling «nummertegn ## i SQL» returnerer «prefiks midlertidige tabeller» , som er ikke tilfelle.

Svar

## omgir en spørringsparameter i Stack Exchange Data Explorer (SEDE).

Delen etter ? er den viste standard parameterverdi.

Fra SEDE-veiledning skrevet av Monica Cellio:

Merk: den spesifikke syntaksen som brukes for parametere er spesifikk for SEDE. Alt vi har sagt så langt om SQL gjelder for alle smaker av SQL. Dette er annerledes.

Som vist i dette spørsmålet, refererer du til en parameter ved å omgi navnet med doble pundtegn, for eksempel ## MinScore ##. Valgfritt kan du spesifisere datatypen (int (et helt tall), float (et tall med en desimalverdi, som 2,5) eller streng): ## MinScore: int ##. Hvis du angir en skriv inn så SEDE vil validere verdier mot den typen, slik at hvis du forventer et tall for poengsum og noen skriver " enhjørning " spørringen vant ikke. Hvis du ikke spesifiserer en type, kan spørringen din motta uventede innganger.


## har ingen betydning i standard SQL. Selv om det ikke er tilfelle her, brukes det i Transact-SQL som et prefiks for å identifisere et globalt midlertidig objekt:

Regler for vanlige identifikatorer

En identifikator som starter med et talltegn angir en midlertidig tabell eller prosedyre. En identifikator som starter med doble tall (##) betegner et globalt midlertidig objekt. Selv om talltegn eller doble talltegn kan brukes til å starte navnene på andre typer objekter, anbefaler vi ikke denne fremgangsmåten.

Kommentarer

  • Det kan være verdt å merke seg at du vil bruke en global midlertidig tabell i SQL Server når du trenger å lage en midlertidig tabell som må nås av flere forskjellige økter, men en permanent tabellen er ikke ideell.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *