如何选择空格前的字符串值的一部分

时间:2018-12-08 16:16:21

标签: mysql database mysql-workbench

我有一个包含字符串值的字段,但是字符串内有空格。此值代表字段值的示例:

ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD

如何查询该字段中第一个空格之前的部分?在我们的示例中:

ECDHE-RSA-AES128-GCM-SHA256

因此,如果字段名称f和表t,我将查询:

SELECT f from t;

如何查询空格前的部分字符串?

注意:

空格可以是一个或多个空格。请考虑一下。

2 个答案:

答案 0 :(得分:1)

您可以使用SUBSTRING()POSITION()进行操作,POSTION()用于查找第一个空白的索引,而SUBSTRING()用于查找所需的空白子串

SELECT SUBSTRING('ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD',1,
      POSITION(' ' IN 'ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD')) AS result;

输出:

ECDHE-RSA-AES128-GCM-SHA256

更具可读性的方式:

SET @str='ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD';
SELECT SUBSTR(@str,1,POSITION(' ' IN @str)) AS result;

答案 1 :(得分:1)

尝试SUBSTRING_INDEX

SELECT SUBSTRING_INDEX(`f`, SPACE(1), 1)
FROM `t`;

请参见dbfiddle