tsql - Why isn't "NOT ( <search_condition> )" listed in definition? -
based on testing, where not
valid sql syntax
not ( x = 10 y > 5 )
however, don't follow definition:
to me, t-sql definition of search condition doesn't seem allow producing not ( <search_condition> )
"
the spec/docs makes seem legitimate target unary negation predicate. produce not ( <search_condition> )
looks requires statement right hand side of conjunction or disjunction...is spec incorrect, or missing way produce this?
< search_condition > ::= { [ not ] <predicate> | ( <search_condition> ) } [ { , | or } [ not ] { <predicate> | ( <search_condition> ) } ] [ ,...n ] <predicate> ::= { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression | string_expression [ not ] string_expression [ escape 'escape_character' ] | expression [ not ] between expression , expression | expression [ not ] null | contains ( { column | * } ,'< contains_search_condition >') | freetext ( { column | * } ,'freetext_string') | expression [ not ] in (subquery | expression [ ,...n ] ) | expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } { | | any} (subquery) | exists (subquery) }
not
listed in square brackets in both parts, meaning it's optional.
if expand this:
< search_condition > ::= { [ not ] <predicate> | ( <search_condition> ) } [ { , | or } [ not ] { <predicate> | ( <search_condition> ) } ] [ ,...n ]
, removing of square brackets , possibly contents, this:
< some_search_condition > ::= { not ( <search_condition> ) }
which string matches.
Comments
Post a Comment