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

nxagd54h  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(382)

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

XXXX-XXX-111111-2222-33 SSS x=AAAA     Au=AAAA  QQQ=AAA(222) SS=AAAA

如何查询此字段中第一个空格之前的零件?在我们的例子中:

XXXX-XXX-111111-2222-33

如果字段名 f 和table t ,我将查询:

SELECT f from t;

如何查询空格前面的部分字符串?
注:
空间可以是一个或多个空间。请考虑一下。

g9icjywg

g9icjywg1#

尝试子字符串索引:

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

见小提琴。

des4xlb0

des4xlb02#

你可以用 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;

相关问题