none
SQL Server2005中关于Like语句的查询 RRS feed

  • 问题

  • 1.在SQL Sever2005中,SELECT * FROM student WHERE NAME LIKE '%[^e]'--为什么表中全部数据都能输出,包括结尾为E的数。当然可以用not like语句,但我想知道的是用[^]为什么不能成功。

    2.STUDENT 表中有一条NAME为“P_pter”的数据,用SELECT * FROM STUDENT WHERE NAME LIKE 'p\_%'为什么不能把这条数据筛选出来。

    2009年12月1日 4:10

答案

  • 問題2的條件可改為
    以下兩种方法:
    like 'P[_]%'
    
    like 'P\_%' escape '\'
    
    問題1:不知道要怎樣效果

    like '%[^e]'

    not like '%e' 相同--結尾不為E時成立

    ROY WU(吳熹)
    2009年12月1日 4:46
    版主

全部回复

  • 1.在SQL Sever2005中,SELECT * FROM student WHERE NAME LIKE '%[^e]'--为什么表中全部数据都能输出,包括结尾为E的数。当然可以用not like语句,但我想知道的是用[^]为什么不能成功。

    2.STUDENT 表中有一条NAME为“P_pter”的数据,用SELECT * FROM STUDENT WHERE NAME LIKE 'p\_%'为什么不能把这条数据筛选出来。

    '%[^e]'--條件列的最后一個字符不是"e"的成立

    'p\_%'--條件列有三個以上的字符,前兩個為"p\"成立

    ROY WU(吳熹)
    2009年12月1日 4:38
    版主
  • 1. what's collation the table use? E <> e if uses case sensitive collation.
    2. 'P\_%' shouldn't include 'P_pter' but 'P_%' should.
    2009年12月1日 4:39
  • 問題2的條件可改為
    以下兩种方法:
    like 'P[_]%'
    
    like 'P\_%' escape '\'
    
    問題1:不知道要怎樣效果

    like '%[^e]'

    not like '%e' 相同--結尾不為E時成立

    ROY WU(吳熹)
    2009年12月1日 4:46
    版主
  • 谢谢,第二个问题懂了,第一个问题中,我是想找出student表中name列最后一个字母不为e的所有记录。例如表中有name为Alice和Rose的记录,为什么执行上述语句后,这两条记录也在结果里面。不知道查询语句有没有什么语法错误?

    2009年12月2日 3:41
  • I am  a new leaner, so ,I don't know something about the “collation”.Anyhow,thank you for your answer!
    2009年12月2日 3:46
  • NAME LIKE '%[^e]'--为什么表中全部数据都能输出,包括结尾为E的数

    首先确定你是否需要区分大小写, 然后对比你的 name 列的排序规则, 确定它是否区分写的

    其次, 对于 like 而言, 数据尾部的空格是影响查询结果的(也就是尾部的空格是有效的, 这和=的处理规则不一样)
    2009年12月2日 4:33