2

我有一张桌子:

姓氏和输出名(= 姓氏)

Name 和 Surname 应该总是有一个值,但有些时候是空的。我需要按姓氏从表中选择,我不能使用姓氏字段。我什至无法使用脚本更改字段值,因为我从外部来源获取此表并且可以随时更改。数据库是 MySQL 4.x

我可以选择以某个字母开头的 Outputname 中的第二个单词吗?就像是

SELECT Outputname FROM USERS 
WHERE seconword(Outputname) LIKE 'A%' SORT BY seconword(Outputname) ASC
4

3 回答 3

2

尝试这个

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

演示

于 2013-11-02T10:53:13.387 回答
1

一种可能的方法:

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

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

于 2013-11-02T10:51:40.690 回答
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'。

于 2013-11-02T11:01:22.027 回答