在每一个空间分隔值的字符串搜索列在数据库

问题描述:

假设我有一列名为CustomerNames与价值观:在每一个空间分隔值的字符串搜索列在数据库

  1. 地区葡萄酒等冷却士
  2. MAGAZZINI imentari里尤尼蒂纺织厂
  3. 饥饿的猫头鹰Al夜间杂货店
  4. 斯普利特啤酒& Al个é
  5. FREDS Futterkiste

我想打一个查询,将只搜索的名字和姓氏的第一个字母,并列出基于FIRSTNAME LASTNAME然后ASC顺序的名称。 例如,如果我搜索在上表中“人”,它应该返回我的东西象下面这样:

  1. FREDS Futterkiste
  2. 地区葡萄酒等冷却士
  3. 分离轨啤酒& Ë
  4. MAGAZZINI imentari里尤尼蒂工厂
  5. 红ry Owl Al l-Night Grocers

我已经使用了下面的查询。

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

输出:

  1. FREDS Futterkiste
  2. 饥饿的猫头鹰升晚杂货店
  3. MAGAZZINI imentari里尤尼蒂纺织厂
  4. 分离轨啤酒& è
  5. 地区葡萄酒等冷却士

这是唯一firstnames的基础上排序结果。 但我想要一个查询,它使用名字和姓氏给出输出。 谢谢。

+0

我很抱歉,但我不明白如何区分名字和姓氏,如果他们都在一列... – 2015-03-31 04:53:00

+0

你不需要通过给他们任何名称来区分它,可以说这些值是空间分开的值,我想优先考虑第一个单词(在第一个空格出现之前),然后下一个然后跟随ng – 2015-03-31 05:01:16

我不认为有一个简单的答案。你需要写一个函数或存储过程根据命令结果列的值,也就是说,是空间分隔的

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

+0

不,我正在寻找不同的功能 – 2015-03-31 06:49:47

试试这个:

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

错误,不存在这样的函数:instr – 2015-03-31 06:50:42

+0

instr从MySQL版本支持:5.6 – Mani 2015-03-31 06:55:34

+0

好吧,所以它的工作,但没有提供所需的结果。即1.)Vins et alcools Chevalier 2.)Split Rail Beer&Ale 3.)Alfreds Futterkiste 4.)Magazzini Alimentari Riuniti 5.)饥饿的猫头鹰通宵杂货店 – 2015-03-31 08:02:17