Tsql 为什么不是';";不(<;搜索条件>;)";列在定义中?
根据测试,Tsql 为什么不是';";不(<;搜索条件>;)";列在定义中?,tsql,Tsql,根据测试,WHERE NOT是有效的SQL语法 where not ( x = 10 y > 5 ) 然而,我并没有从定义上理解: 对我来说,搜索条件的T-SQL定义似乎不允许生成NOT()” spec/docs使它看起来像一元否定的唯一合法目标是谓词。要生成not(),似乎需要语句位于连接或断开的右侧……spec不正确,还是我缺少生成该语句的方法 < search_condition > ::= { [ NOT ] <predicate> | (
WHERE NOT
是有效的SQL语法
where not ( x = 10 y > 5 )
然而,我并没有从定义上理解:
对我来说,搜索条件的T-SQL定义似乎不允许生成NOT()
”
spec/docs使它看起来像一元否定的唯一合法目标是谓词。要生成not()
,似乎需要语句位于连接或断开的右侧……spec不正确,还是我缺少生成该语句的方法
< search_condition > ::=
{ [ NOT ] <predicate> | ( <search_condition> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]
[ ,...n ]
<predicate> ::=
{ expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression
| string_expression [ NOT ] LIKE string_expression
[ ESCAPE 'escape_character' ]
| expression [ NOT ] BETWEEN expression AND expression
| expression IS [ NOT ] NULL
| CONTAINS
( { column | * } ,'< contains_search_condition >')
| FREETEXT ( { column | * } ,'freetext_string')
| expression [ NOT ] IN (subquery | expression [ ,...n ] )
| expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }
{ ALL | SOME | ANY} (subquery)
| EXISTS (subquery) }
:=
{[不]|()}
[{和|或}[不]{|()}]
[,…n]
::=
{表达式{=|<>|!=|>=|!>=|!><|<|<=|!<}表达式
|字符串表达式[与字符串表达式不同]
[转义“转义字符”]
|表达式和表达式之间的表达式[非]
|表达式为[非]NULL
|包含
({column |*},<包含搜索条件>)
|自由文本({column},'FREETEXT_string')
|表达式[不]在(子查询|表达式[,…n])
|表达式{=|<>|!=|>=|!>=|!>=|!><|<=|!<}
{ALL | SOME | ANY}(子查询)
|存在(子查询)}
非
列在两部分的方括号中,这意味着它是可选的
如果我们扩大这一范围:
< search_condition > ::=
{ [ NOT ] <predicate> | ( <search_condition> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]
[ ,...n ]
:=
{[不]|()}
[{和|或}[不]{|()}]
[,…n]
,去掉一些方括号和可能的内容,我们得到:
< some_search_condition > ::= { NOT ( <search_condition> ) }
::={NOT()}
您的字符串与之匹配。
[](括号)可选语法项。不要键入括号
该语法链接位于具有定义的页面上Transact-SQL语法约定 您认为它不支持not是什么意思?
发布失败的查询 这车开得很好
select nativeMD5
from docSVsys
join docSVtext
on docSVtext.fieldID = 110
and docSVtext.sID = docSVsys.sID
where not (docSVsys.sID = 10 or docSVsys.sID = 11)
我不是说它失败了。我是说我不懂铁路图。改进建议?@Blam:Christopher问的是如何阅读语法图,而不是如何编写查询。但第一部分不是可选的:搜索条件总是会产生以下两种结果:
[非]
或()
然后它将在第二个可选部分中添加内容,其中生产不是()
非常简单……你能为我详细说明一下如何删除括号吗?@Christopherfohl:在语法中,你可以删除方括号及其内容,也可以不删除其内容,这意味着你可以保留或删除可选部分。现在,我先删除了NOT
周围的括号,然后删除了第二对括号及其所有内容。@ChristopheropherPfohl:alternation symbol适用于它左右的变量。如果语法是描述[非]
或()
,前者必须组成一个组:{[非]谓词}|()}
必须阅读50*才能得到它。我现在感觉很傻。非常感谢。