元员额提供了一个不错的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中搜索“中搜索”返回“前缀临时表”,但情况并非如此。
发布于 2020-03-05 10:43:52
##包围堆栈交换数据资源管理器 (SEDE)中的查询参数。
?之后的部分是显示的默认参数值。
来自莫妮卡·塞利奥写的SEDE教程:
注意:用于参数的特定语法特定于SEDE。到目前为止,关于SQL的所有内容对于所有类型的SQL都是正确的;这是不同的。如此查询所示,您可以使用双磅标记(如##MinScore## )包围参数名称,从而引用该参数。您还可以选择指定数据类型(int (整数)、float (带有小数值的数字,如2.5)或字符串):##MinScore:int##。如果您指定了一个类型,那么SEDE将根据该类型验证值,因此如果您期望一个分数的数字,而有人键入"unicorn“,则查询将不会运行。如果不指定类型,查询可能会收到意外的输入。
##在标准SQL中没有任何意义。虽然这里的情况并非如此,但Transact-SQL中使用它作为前缀来标识全局临时对象:
规则标识符以数字符号开头的标识符表示临时表或过程。以双数字符号(##)开头的标识符表示全局临时对象。虽然数字符号或双数字符号字符可以用于开始其他类型的对象的名称,但我们不建议这样做。
https://dba.stackexchange.com/questions/261272
复制相似问题