Egy meta-bejegyzés szép kivonatot ad az SQL-ből
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
Mit jelent a ## kettős számjel odabent?
Gondolom, ez valamiféle karakterlánc-szintaxis, de ehhez még kulcsszót sem tudok kitalálni. googling “számjel ## az SQL-ben” visszaadja az “előtag ideiglenes tábláit” , ami nem ez a helyzet.
Válasz
##
körülvesz egy lekérdezési paramétert a Stack Exchange Data Explorer (SEDE).
A ?
utáni rész az alapértelmezett paraméter értéke.
A SEDE oktatóanyagból , amelyet Monica Cellio írt:
Megjegyzés: a paraméterekhez használt szintaxis a SEDE-re jellemző. Minden, amit az SQL-ről eddig mondtunk, az SQL minden ízére igaz; ez más.
Amint ebben a lekérdezésben látható, akkor egy paraméterre hivatkozik, ha a nevét megduplázott fontjelekkel veszi körül, például ## MinScore ##. Opcionálisan megadhatja az adattípust (int (egész szám), float (tízes értékű szám, például 2.5) vagy karakterlánc): ## MinScore: int ##. Ha megad egy írja be, akkor a SEDE ellenőrzi az értékeket az adott típushoz képest, így ha számot vár a pontszámra, és valaki " egyszarvú " A lekérdezés nem fut. Ha nem ad meg típust, akkor a lekérdezés váratlan bemeneteket kaphat.
##
nincs jelentése a standard SQL-ben. Noha itt nem erről van szó, a Transact-SQL-ben előtagként használják egy globális ideiglenes objektum azonosítására:
Szabályok a szokásos azonosítókhoz
A számjellel kezdődő azonosító ideiglenes táblázatot vagy eljárást jelöl. A kettős számjellel (##) kezdődő azonosító globális ideiglenes objektumot jelöl. Bár a számjellel vagy a kettős számjellel használható karakterek más típusú objektumok nevének megkezdéséhez, nem javasoljuk ezt a gyakorlatot.
Megjegyzések
- Érdemes megjegyezni, hogy globális ideiglenes táblázatot használna az SQL Server szolgáltatásban, amikor ideiglenes táblázatot kell létrehoznia, amelyet több különböző munkamenethez kell elérnie, de állandó táblázat nem ideális.