搜索列中每个空格分隔值的字符串

时间:2015-03-31 04:29:02

标签: php mysql string search

假设我在数据库中有一个名为CustomerNames的列,其值为:

  1. Vins et al 冷却Chevalier
  2. Magazzini Al imentari Riuniti
  3. 饥饿的猫头鹰 Al l-Night Grocers
  4. Split Rail Beer& Al e
  5. Al freds Futterkiste
  6. 我想创建一个只搜索FIRSTNAME和LASTNAME首字母的查询,并根据FIRSTNAME然后LASTNAME以ASC顺序列出名称。 例如,如果我在上表中搜索“al”,它应该返回如下所示的内容:

    1. Al freds Futterkiste
    2. Vins et al 冷却Chevalier
    3. Split Rail Beer& 的Al ë
    4. Magazzini Al imentari Riuniti
    5. 饥饿的猫头鹰 Al l-Night Grocers
    6. 我使用了以下查询。

      SELECT * FROM Customers where CustomerName LIKE 'al%' OR CustomerName LIKE '% al%' ORDER BY CustomerName 
      

      输出:

      1. Al freds Futterkiste
      2. 饥饿的猫头鹰 Al l-Night Grocers
      3. Magazzini Al imentari Riuniti
      4. Split Rail Beer& Al e
      5. Vins et al 冷却Chevalier
      6. 这是仅根据firstnames排序结果。 但是我想要一个查询,它使用firstnames然后是lastnames来提供输出。 感谢。

2 个答案:

答案 0 :(得分:0)

我认为没有直接的答案。您需要编写一个函数或存储过程来根据列空间分隔的列值来排序结果

看看这个 MySQL: how to sort the words in a string using a stored function?

答案 1 :(得分:0)

试试这个:

SELECT * FROM Customers
where CustomerName LIKE 'al%' 
OR CustomerName LIKE '% al%' 
ORDER BY substring(CustomerName, instr(CustomerName, 'al'))