【发布时间】:2013-05-15 12:21:42
【问题描述】:
看下面的例子
where '1|2|||1|' like '%%|%%|%%|%%|[^3]|' /* it will return true if the string between last two pipe symbols is not like '3'*/
上面的代码运行良好。
以同样的方式,我需要为最后两个管道之间的字符串构建一个表达式,不像 10 或 11。或者至少不像 10。所以尝试如下。
where '1|2|||8|' like '%%|%%|%%|%%|[^10]|'
上面的语句对 1,0 和 10 而不是 10 返回 false。因此上面的查询将 1 视为单独的字符串,将 0 视为单独的字符串。 我期待一个表达式,仅当最后两个管道之间的字符串为 10 时才会返回 false。不是 1 或 0。
我也尝试过使用花括号。但它的行为不同。
where '1|2|||8|' like '%%|%%|%%|%%|[{^10}]|
另外,如果你可以派生一个表达式 - 最后两个管道之间的字符串不应该是 10 或 11。
注意:我不能在查询中使用 'OR' 或 'NOT LIKE'。
有什么想法吗?
【问题讨论】:
标签: sql sql-server string sql-server-2005 sql-like