【问题标题】:MySQL query to extract first word from a fieldMySQL查询从字段中提取第一个单词
【发布时间】:2010-10-15 22:44:44
【问题描述】:

我想运行一个仅从特定字段返回第一个单词的查询,该字段有多个由空格分隔的单词,我假设我可能需要执行一些正则表达式工作来完成此操作?我知道如何在 PHP 中使用几种方法来做到这一点,但这最好在数据库端进行。任何想法都非常感谢。谢谢。

【问题讨论】:

    标签: php sql mysql


    【解决方案1】:

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

    SELECT SUBSTRING_INDEX(`name`, ' ', 1);
    

    【讨论】:

    • 使用SELECT SUBSTRING_INDEX(name, ' ', -1);选择最后一个单词。
    • 那些只有一个单词没有空格的记录呢?
    • 有什么办法可以得到第一个单词吗?
    • 嗯,你说记录只有一个词,没有空格,所以“全值”就是那个词,在这种情况下。不确定有什么不清楚的地方,请继续尝试。
    【解决方案2】:

    给你:)

    SELECT SUBSTRING_INDEX( `field` , ' ', 1 ) AS `field_first_word`
    FROM `your_table`
    

    【讨论】:

      【解决方案3】:
      SELECT
        SUBSTR(field_name, 1, LOCATE(' ', field_name)) AS first_word
      FROM
        table
      

      【讨论】:

      • 需要添加一个-1,否则你会得到一个额外的空间。
      【解决方案4】:
      select 
          substring(test_field, 1, instr(test_field, ' ')) 
      from 
          test_table
      

      【讨论】:

        【解决方案5】:

        这段代码可以解决问题

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

        输出:Héctor-99

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

        另一个可选的可能是:

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

        输出:一些

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

        【讨论】:

        • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-04
        • 1970-01-01
        • 2014-11-30
        • 2020-03-14
        • 1970-01-01
        相关资源
        最近更新 更多