【发布时间】:2010-10-15 22:44:44
【问题描述】:
我想运行一个仅从特定字段返回第一个单词的查询,该字段有多个由空格分隔的单词,我假设我可能需要执行一些正则表达式工作来完成此操作?我知道如何在 PHP 中使用几种方法来做到这一点,但这最好在数据库端进行。任何想法都非常感谢。谢谢。
【问题讨论】:
我想运行一个仅从特定字段返回第一个单词的查询,该字段有多个由空格分隔的单词,我假设我可能需要执行一些正则表达式工作来完成此操作?我知道如何在 PHP 中使用几种方法来做到这一点,但这最好在数据库端进行。任何想法都非常感谢。谢谢。
【问题讨论】:
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);选择最后一个单词。
给你:)
SELECT SUBSTRING_INDEX( `field` , ' ', 1 ) AS `field_first_word`
FROM `your_table`
【讨论】:
SELECT
SUBSTR(field_name, 1, LOCATE(' ', field_name)) AS first_word
FROM
table
【讨论】:
select
substring(test_field, 1, instr(test_field, ' '))
from
test_table
【讨论】:
这段代码可以解决问题
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]+')
输出:一些
在括号内你可以放任何你想要的东西,学习一些正则表达式你就能做出伟大的事情。
【讨论】: