【问题标题】:MYSQL extract uppercase wordsMYSQL提取大写单词
【发布时间】:2014-07-22 10:55:14
【问题描述】:

我正在尝试提取大写和小写的单词。 例如,在具有名字和姓氏值的单列(全名)中,这里我需要将它们区分为名字和姓氏,名字总是首字母大写,姓氏总是大写。

Full_Name:
---------
abc ABC
pqr RTF

现在我需要将它们分成 2 个不同的列,如下所示

First_name  Last_name
---------   --------
 abc        ABC
 pqr        RTF

非常感谢您提前输入。

【问题讨论】:

  • 只能从数据库中获取数据。如果你想分开它,你必须使用 php 代码。
  • 其实上面的输出我需要SQL语句。
  • 只有三个名字啊?喜欢Agns AZERI DEB
  • @Nick...尝试使用子字符串函数。

标签: mysql extract uppercase words


【解决方案1】:
SELECT LEFT(Full_Name,LOCATE(' ',Full_Name)) AS First_name,
SUBSTRING(Full_Name,LOCATE(' ',Full_Name)) AS Last_name
FROM TABLE_NAME

查看SQL Fiddle

【讨论】:

  • 检查你的小提琴和 OP 是匹配的结果
  • 不做 OP 想要的,dps 应该是名字。我认为没有 REGEXP 就无法解决这个问题。
  • 我知道最后一条记录不匹配,但给定的输入之间没有相似之处。
  • @Sadikhasan..查询不适用于所有情况,例如:Alain Dps DENI....这里 'Alain Dps' 应该放在 first_name 中,'DENI' 应该放在 last_name 中...... .谢谢你..至少你提供了基本的查询,这将有助于我玩......如果你提供完整的更正查询,我们将不胜感激。
  • @All...有什么办法可以通过提取大写单词来解决。
【解决方案2】:

MySQL 中最简单的方法是使用substring_index()

select substring_index(full_name, ' ', 1) as First_Name,
       substring_index(full_name, ' ', -1) as Last_Name
from table t;

编辑:

我错过了包含多个部分的名称。

select substring_index(full_name, ' ', 1) as First_Name,
       trim(substring(full_name,
                      length(substring_index(full_name, ' ', 1))
                     )
           ) as Last_Name
from table t;

【讨论】:

  • @user3864232 。 . .我明白。我编辑了答案,但它仍然不适用于多部分名字,如果存在的话。在 MySQL 中,根据大小写提取子字符串可能会很痛苦。
  • @Linoff ....感谢您的输入...但是对于以下简单名称,我得到了错误的结果:案例 1:Sam PUSALA,输出是 Sam 作为 fisrt_name(这是正确的),m PUSALA as last_name 这是不正确的,因为我得到了额外的字母'm'和空格............案例2:如果名字是你所说的2个单词,则不起作用..cas3:有时full_name 仅包含大写单词,这意味着只有姓氏.....如果您能提供任何帮助,那就太好了。
猜你喜欢
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多