LIKE子句中的上限符号(^)无法正常工作

时间:2013-05-15 12:21:43

标签: sql sql-server string sql-server-2005 sql-like

见下面的例子

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”

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您需要分别检查每个字符

  

喜欢“...不是1后跟不是(0或1)”

where '1|2|||8|' like '%%|%%|%%|%%|[^1][^01]|'