SELECT * FROM 表格 WHERE 标题字段 LIKE '%关键字%'

解决方案 »

  1.   

    那么这个sql语言怎么写呢?
    在表里面有个keywords字段,里面放的是关键字,每个关键字用";"分开,我如果要想精确的匹配关键字应该怎么写呢?
    “SELECT * FROM 表格 WHERE 标题字段 LIKE '%关键字%'”是不行的,因为如果关键字为he,那么he和hello都会匹配从而返回记录集,但我只想返回he的记录集。
      

  2.   

    我有个想法是在keywords入库前先在最前面和最后面分别加一个“;”,然后用
    “SELECT * FROM 表格 WHERE 标题字段 LIKE ';%关键字%;'”
    来查询
    但是能不能单纯的使用sql语言来查询呢?
    sql有没有什么正则表达式?
      

  3.   

    忠告:别用like,要用也应该用 contains。 like will make you crazzy if the size of database is big.
      

  4.   

    如果你用的是mysql,还可以用正则表达式查询,这样表现会更好些
      

  5.   

    我用的就是mysql,上面的那句话如何写呢?
      

  6.   

    数据库里,关键字是这样存储的,    ;关键字1;关键字2;。。
    你输入关键字后, 
     “SELECT * FROM 表格 WHERE 关键字段 LIKE '%;关键字;%'”
      

  7.   

    luok(罗开) 你和我想的一样
    但是有一点啊,如果他输入的时候用的既有全角的分号又有半角分号,那么上面那个like不就不一定那么好使了吗?
      

  8.   

    其实很多都不是用like,而是用更改定界符函数来把输入分成几个关键词,然后在数据库里查找这些关键词:这些函数不同的语言里都有,自己查一下很容易找到的,(以下的函数是coldfusion 中的非asp)
    ListChangeDelims(你要更该的列表,"更改前的定界符","更改后的定界符")而是在读进去的时候把 <input type="text" name=“list”> </input>当你输入 
    key1;key2;key3
    定义变量newlist=ListChangeDelims(list,";"",")
    list表单变成以,为定界符
    key1,key2,key3
    然后用一个添加单引号函数定义变量new2list=QuotedValuelist(newlist)变成
    ‘key1’,‘key2’,‘key3’查的时候
    select * from  tb
    where 标题字段 in (%new2list%)//coldfusion中为#new2list#而非%coldsuion%以下同相当于
    select * from  tb
    where 标题字段 in (‘key1’,‘key2’,‘key3’) 方法二:比较好的,不同语言但是读进的函数不同(注意:所有函数为coldfusion下,所以只讲思想)
    一般的网站是用空格号来定界的,
    1输入文本
    -- <input type="text" name=“list”> </input>
    输入
    key1 key2 key3
    2把文本转化为列表
    定义变量newlist=listlen(list,“ ’,‘”)//以空格为定界符,符函listlen():listlen(你要输入的文本or列表,“你要指定的定界符 ”)
    则%newlist%为
    key1 ’,‘key2 ’,‘key3
    select * from  tb
    where 标题字段 in (‘%new2list%’)相当于
    key1 ’,‘key2 ’,‘key3
    select * from  tb
    where 标题字段 in (‘key1 ’,‘key2 ’,‘key3’)
      

  9.   

    也可以把这些关键词一个一个地分出来,然后用一个一个地查:-->list='key1 key2 key3'     //表单输入
    -->newlist=listlen(list,‘ ’)//告诉电脑是以空格分隔,
    -->long=thelongoflist(newlist)   //判断列表的长度,long的值为3
    -->遍历表单,并把他转化为数组 a[long-1]
    -->然后分别查询a[0]....a[long-1]