메타 게시물 은 멋진 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
여기서 이중 숫자 기호 ##은 무엇을 의미합니까?
그게 일종의 문자열 구문 인 것 같지만 키워드를 추측 할 수도 없습니다. “SQL에서 숫자 기호 ##”검색 은 “접두사 임시 테이블”을 반환합니다. 그렇지 않습니다.
Answer
##
는 Stack Exchange 데이터 탐색기 (SEDE).
?
뒤의 부분이 표시되는 기본값입니다. 매개 변수 값입니다.
Monica Cellio가 작성한 SEDE 자습서 에서 :
참고 : 매개 변수에 사용되는 특정 구문은 SEDE에 고유합니다. 지금까지 SQL에 대해 언급 한 모든 내용은 SQL의 모든 종류에 적용됩니다. 이것은 다릅니다.
이 쿼리에서 볼 수 있듯이 매개 변수는 이름을 두 배로 된 파운드 기호로 묶어 참조합니다. ## MinScore ##. 선택적으로 데이터 유형 (int (정수), float (2.5와 같은 10 진수 값이있는 숫자) 또는 문자열)을 지정할 수 있습니다. ## MinScore : int ##. 다음을 입력하면 SEDE가 해당 유형에 대해 값의 유효성을 검사하므로 “점수에 대한 숫자를 예상하고 누군가가 " unicorn " 쿼리가 실행되지 않습니다. 유형을 지정하지 않으면 쿼리에 예기치 않은 입력이 수신 될 수 있습니다.
##
는 표준 SQL에서 의미가 없습니다. 여기서는 그렇지 않지만 Transact-SQL에서 전역 임시 개체를 식별하기위한 접두사로 사용됩니다.
일반 식별자에 대한 규칙
숫자 기호로 시작하는 식별자는 임시 테이블 또는 프로 시저를 나타냅니다. 이중 숫자 기호 (##)로 시작하는 식별자는 전역 임시 개체를 나타냅니다. 숫자 기호 또는 이중 숫자 기호 문자를 사용하여 다른 유형의 개체 이름을 시작할 수 있지만이 방법은 권장하지 않습니다.
설명
- 여러 세션에서 액세스해야하지만 영구적 인 임시 테이블을 만들어야하는 경우 SQL Server에서 전역 임시 테이블을 사용한다는 점에 유의할 필요가 있습니다. 테이블은 이상적이지 않습니다.