mysql查询第二个单词以字母开头

时间:2013-11-02 10:46:45

标签: mysql sql

我有一张桌子:

姓名姓氏和输出名称(=姓名姓氏)

名称和姓氏应始终具有值,但有些时间是空的。 我需要从姓氏中选择表格,我不能使用姓氏字段。 我甚至无法使用脚本更改字段值,因为我从外部源获取此表,并且可以随时更改。 数据库是MySQL 4.x

我可以选择以一些字母开头的Outputname中的第二个单词吗?

之类的东西
SELECT Outputname FROM USERS 
WHERE seconword(Outputname) LIKE 'A%' SORT BY seconword(Outputname) ASC

3 个答案:

答案 0 :(得分:2)

试试这个

   SELECT 
   SUBSTRING_INDEX(Outputname, ' ', -1) as SecondWord
   FROM USERS 
   WHERE SUBSTRING_INDEX(Outputname, ' ', -1) LIKE 'A%'
   ORDER BY SecondWord ASC

demo

答案 1 :(得分:1)

一种可能的方法:

    SELECT Surname 
      FROM (
       SELECT SUBSTRING_INDEX(Outputname, ' ', -1) 
              AS Surname
         FROM Users) AS S
    WHERE Surname LIKE 'A%' 
 ORDER BY Surname;

SQL Fiddle。此方法基于Outputname的格式始终为'FirstName LastName'的假设(即,' '符号用作分隔符,并且每次仅使用一次)。

答案 2 :(得分:0)

我根本不明白你的问题。所以你只能访问Outputname(由两个单词name + surname组成),你必须用第二个单词对它进行排序吗?

尝试类似的东西(对我有用):

SELECT 
    Outputname, 
    SUBSTRING_INDEX(Outputname, ' ', -1) as SecondWord
FROM USERS 
ORDER BY SecondWord ASC

条款SUBSTRING_INDEX(Outputname, ' ', -1) as SecondWord返回空格后面的最后一个单词。所以,如果你有Outputname ='Maria Callas',它会返回'Callas',如果你有Outputname ='Sophia Cecilia Kalos',它会返回'Kalos'。