Как выбрать часть строкового значения перед пробелом - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть поле, которое содержит строковое значение, но внутри строки есть пробелы.Это значение представляет собой пример значения поля:

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 голосов
/ 08 декабря 2018

Попробуйте SUBSTRING_INDEX :

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

См. dbfiddle .

0 голосов
/ 08 декабря 2018

Вы можете использовать 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;
...