我想获得一个空格之前的字段中的所有字符
例如,如果field1
是"chara ters"
我要它回来 "chara"
该选择语句是什么样的?
Answers:
SELECT LEFT(field1,LOCATE(' ',field1) - 1)
请注意,如果所讨论的字符串不包含空格,则将返回一个空字符串。
select SUBSTRING_INDEX( field1, ' ', 1 ) from table;
如果我们想在没有空格的情况下使用完整的字符串,那么将是一个选择。
SUBSTRING_INDEX
)下方的答案作为一般解决方案是“更好”的,因为它将保留不包含定界符的值,而不是产生空白值。
下面是另一种可行的方法,对于某些人来说似乎更简单一些。它使用SUBSTRING_INDEX MySQL函数。1返回第一个空格之前的所有内容,-1返回最后一个空格之后的所有内容。
这将返回“ chara”:
SELECT SUBSTRING_INDEX( field1, ' ', 1 )
这将返回“ ters”:
SELECT SUBSTRING_INDEX( field1, ' ', -1 )
细节
正值将从字符串的开头寻找您指定的字符,负值将从字符串的结尾开始。数字的值表示在返回字符串的其余部分之前要查找的指定字符的数量。如果您要搜索的字符不存在,则将返回整个字段值。
在这种情况下,-2会将所有内容返回到倒数第二个空格的右侧,该位置在此示例中不存在,因此将返回整个字段值。
您将需要一些字符串操作。假设每个字段至少有一个空格字符:
SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table;
安全方法:
SELECT IF(
LOCATE(' ', field1),
SUBSTR(field1, 0, LOCATE(' ', field1)),
field1
) FROM your_table;
SELECT SUBSTR(field1, 1, LOCATE(' ', field1)) FROM your_table;