请问各位大虾
有没有这样的sql查询语句
比如说现在有张表:
id   name                              sex
1   zhongsnajiushihaoshua   22
然后根据“name” 模糊查找“a”查询出来是这样的:
id   name                              sex
1   snaji                                 22
也就是说显示“name”这行的时候只显示“a”前后两个字符,或者其他字符为省略号代替

解决方案 »

  1.   

    可以,首先使用LIKE来模糊匹配,然后将查询到的结果用字符串处理函数处理一下就okay了。
    代码参考如下:SELECT SUBSTR(NAME,INSTR(NAME, 'a', 1, 1)- 2, INSTR(NAME, 'a', 1, 1)+ 2)
    FROM t1 
    WHERE NAME LIKE '%__a__%';
    where条件筛选满足条件的记录,字符a前后至少有2个字符
    substr()函数,取子串。
    instr()函数,返回name中字符a第一次出现的位置,+2,-2确定子串取的位置。
      

  2.   

    select id,regexp_substr(name,'((..)?|(.)?)a((..)?|(.)?)') name,sex from table1 
    where name like '%a%'