Wat betekent dubbel nummerteken ## in SQL?

Een metapost geeft een aardig SQL-fragment

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 

Wat betekent het dubbele cijferteken ## daarbinnen?

Ik denk dat dat een soort string-syntaxis is, maar ik kan daar niet eens een trefwoord voor raden. googelen “nummerteken ## in SQL” geeft als resultaat “voorvoegsel tijdelijke tabellen” , dat is niet het geval.

Answer

## omringt een queryparameter in de Stack Exchange Data Explorer (SEDE).

Het gedeelte na de ? is de weergegeven standaard parameterwaarde.

Van de SEDE Tutorial geschreven door Monica Cellio:

Opmerking: de specifieke syntaxis die voor parameters wordt gebruikt, is specifiek voor SEDE. Alles wat we tot nu toe hebben gezegd over SQL geldt voor alle smaken van SQL; dit is anders.

Zoals in deze query wordt getoond, verwijst u naar een parameter door de naam ervan te omringen met dubbele hekjes, zoals ## MinScore ##. Optioneel kunt u het gegevenstype specificeren (int (een geheel getal), float (een getal met een decimale waarde, zoals 2,5) of string): ## MinScore: int ##. Als u een type, dan valideert SEDE waarden voor dat type, zodat als u “een cijfer verwacht voor score en iemand typt " eenhoorn " de zoekopdracht wordt niet uitgevoerd. Als u geen type opgeeft, kan uw zoekopdracht onverwachte invoer ontvangen.


## heeft geen betekenis in standaard SQL. Hoewel dit hier niet het geval is, wordt het in Transact-SQL gebruikt als een voorvoegsel om een globaal tijdelijk object te identificeren:

Regels voor reguliere identifiers

Een identifier die begint met een hekje, duidt een tijdelijke tabel of procedure aan. Een identificatie die begint met dubbele cijfers (##) geeft een globaal tijdelijk object aan. Hoewel het hekje of dubbele nummerteken kunnen worden gebruikt om de namen van andere typen objecten te beginnen, raden we deze praktijk niet aan.

Opmerkingen

  • Het is misschien de moeite waard om op te merken dat u een globale tijdelijke tabel in SQL Server zou gebruiken wanneer u een tijdelijke tabel moet maken waartoe meerdere verschillende sessies toegang moeten hebben, maar een permanente tabel is niet ideaal.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *