首先来说 IsDescendantOf 中是不支持子句的

SQL 的转义字符是:’(单引号)

下面的就是错误的

例:select * from tbl where uyear=”’06’

node.IsDescendantOf(select node from cftea_tbl where id=1)=1

请注意其中红色背景的单引号,它即表示转义字符,如果我们省略,则整个语句会出错,转义字符不会输出,上例中
uyear 的实际条件值为 ’06,而不是 ”06

可以同时执行多个 SQL 语句

为什么不能省略呢,假如我们省略,上句变成:select * from tbl where
uyear=”06′

declare @node hierarchyid select @node=node from cftea_tbl where id=1
select * from cftea_tbl where node.IsDescendantOf(@node)=1

由于在 SQL 中单引号表示字符串的开始和结束符号,于是 SQL
解释器会认为语句中灰色背景的为字符串,其后的语句显然是个错误的语句,当然会报错,为了解决字符串的单引号问题,就出现了转义字符单。

也可以把 hierarchyid
字段先取出来,转换成字符串

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注