代码之家  ›  专栏  ›  技术社区  ›  Stuart

从字段中提取第一个单词的MySQL查询

  •  32
  • Stuart  · 技术社区  · 17 年前

    我想运行一个查询,只返回某个特定字段的第一个单词,这个字段有多个用空格分隔的单词,我想我可能需要执行一些正则表达式来完成这个任务?我知道如何在PHP中使用一些方法来实现这一点,但最好在数据库端执行。非常感谢您的任何想法。谢谢

    4 回复  |  直到 17 年前
        1
  •  86
  •   Sk8erPeter miku    11 年前

    SUBSTRING_INDEX : http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index

    SELECT SUBSTRING_INDEX(`name`, ' ', 1);
    
        2
  •  21
  •   Bogdan Constantinescu    17 年前

    给你:)

    SELECT SUBSTRING_INDEX( `field` , ' ', 1 ) AS `field_first_word`
    FROM `your_table`
    
        3
  •  5
  •   Manrico Corazzi    17 年前
    select 
        substring(test_field, 1, instr(test_field, ' ')) 
    from 
        test_table
    
        4
  •  3
  •   Seb    17 年前
    SELECT
      SUBSTR(field_name, 1, LOCATE(' ', field_name)) AS first_word
    FROM
      table
    
        5
  •  0
  •   Marcelo Giacometti da Silva    5 年前

    这段代码可能会起作用

    select regexp_substr("Héctor-99 Eduvijes Uribe Curiel", '[[:graph:]]*')`
    

    这与其他答案非常相似,但工作方式不同,您可以在这里了解更多信息! https://dev.mysql.com/doc/refman/8.0/en/regexp.html

    另一个可选方案是:

    select regexp_substr("Some name", '[a-z]+')
    

    在括号内,你可以放任何你想要的东西,学习一些正则表达式,你将能够做伟大的事情。