Co oznacza podwójny znak ## w SQL?

meta post zawiera ładny fragment 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 

Co tam oznacza podwójny znak liczbowy ##?

Wydaje mi się, że jest to jakaś składnia ciągu, ale nie mogę nawet odgadnąć słowa kluczowego. googling „znak numeru ## w SQL” zwraca „prefiks tabel tymczasowych” , czyli nie w tym przypadku.

Odpowiedź

## otacza parametr zapytania w Stack Exchange Data Explorer (SEDE).

Część po ? jest wyświetlaną wartością domyślną wartość parametru.

Z samouczka SEDE napisanego przez Monikę Cellio:

Uwaga: szczególna składnia używana dla parametrów jest specyficzna dla SEDE. Wszystko, co powiedzieliśmy do tej pory o SQL, jest prawdziwe dla wszystkich odmian SQL; to jest inne.

Jak pokazano w tym zapytaniu, odwołujesz się do parametru, otaczając jego nazwę podwójnymi znakami funta, takimi jak ## MinScore ##. Opcjonalnie możesz określić typ danych (int (liczba całkowita), float (liczba z wartością dziesiętną, np. 2,5) lub string): ## MinScore: int ##. Jeśli określisz typ, SEDE zweryfikuje wartości względem tego typu, więc jeśli „oczekujesz liczby dla wyniku i ktoś wpisze " jednorożec " zapytanie nie zostało uruchomione. Jeśli nie określisz typu, zapytanie może otrzymać nieoczekiwane dane wejściowe.


## nie ma znaczenia w standardowym SQL. Chociaż tak nie jest w tym przypadku, jest używany w Transact-SQL jako przedrostek do identyfikacji globalnego obiektu tymczasowego:

Reguły dla zwykłych identyfikatorów

Identyfikator, który zaczyna się od znaku liczby, oznacza tymczasową tabelę lub procedurę. Identyfikator zaczynający się od podwójnych cyfr (##) oznacza globalny obiekt tymczasowy. Chociaż znaki cyfry lub znaki podwójnej cyfry mogą być używane do rozpoczynania nazw innych typów obiektów, nie zalecamy tej praktyki.

Komentarze

  • Warto zauważyć, że globalną tabelę tymczasową można użyć w SQL Server, gdy trzeba utworzyć tymczasową tabelę, do której dostęp musi mieć wiele różnych sesji, ale tabela nie jest idealna.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *