Встроенные функции
Для работы со строка в MySQL определен ряд встроенных функций:
-
CONCAT : объединяет строки. В качестве параметра принимает от 2-х и более строк, которые надо соединить:
SELECT CONCAT('Tom', ' ', 'Smith') -- Tom Smith
SELECT CONCAT_WS(' ', 'Tom', 'Smith', 'Age:', 34) -- Tom Smith Age: 34
SELECT LENGTH('Tom Smith') -- 9
SELECT LTRIM(' Apple')
SELECT RTRIM(' Apple ')
SELECT TRIM(' Tom Smith ')
С помощью дополнительного оператора можно задать где имеено удалить пробелы: BOTH (в начале и в конце), TRAILING (только в конце), LEADING (только в начале):
SELECT TRIM(BOTH FROM ' Tom Smith ')
SELECT LOCATE('om', 'Tom Smith'); -- 2 SELECT LOCATE('m', 'Tom Smith'); -- 3 SELECT LOCATE('m', 'Tom Smith', 4); -- 6 SELECT LOCATE('mig', 'Tom Smith'); -- 0
SELECT LEFT('Apple', 3) -- App
SELECT RIGHT('Apple', 3) -- ple
SELECT SUBSTRING('Galaxy S8 Plus', 8), -- S8 Plus (SELECT SUBSTRING('Galaxy S8 Plus', 8, 2) ); -- S8
SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', 1), -- Galaxy (SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', 2) ), -- Galaxy S8 (SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', -2) ); -- S8 Plus
SELECT REPLACE('Galaxy S8 Plus', 'S8 Plus', 'Note 8') -- Galaxy Note 8
SELECT INSERT('Galaxy S9', 8, 3, 'Note 9'); -- Galaxy Note 9
SELECT REVERSE('123456789') -- 987654321
SELECT LOWER('Apple') -- apple
SELECT UPPER('Apple') -- APPLE
SELECT REPEAT('ab', 5); -- ababababab
SELECT LPAD('Tom Smith', 13, '*'); -- ****Tom Smith
SELECT RPAD('Tom Smith', 13, '*'); -- Tom Smith****
Например, возьмем таблицу:
CREATE TABLE Products ( Id INT AUTO_INCREMENT PRIMARY KEY, ProductName VARCHAR(30) NOT NULL, Manufacturer VARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price DECIMAL NOT NULL );
И при извлечении данных применим строковые функции:
SELECT UPPER(LEFT(Manufacturer,2)) AS Abbreviation, CONCAT(ProductName, ' - ', Manufacturer) AS FullProdName FROM Products ORDER BY Abbreviation
Обрезать строку до первого пробела
Добрый день!
Нужно обрезать троку до первого пробела, например:
есть таблица, состоящая из нескольких столбцов, один из них это записная книжка.
Там есть цифры 123456 потом пробел потом идут предложения, так надо чтобы выводилисть только цифры.
Функция left не подходит, так как цифры разной длины.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Обрезать строку до первого пробела
Первое, что пришло в голову: #include <iostream> using namespace std; void getWord ( char *.
Обрезать строку, начиная с первого встретившегося пробела
Задача: считать строку из textbox-а и считая, что первый символ отличен от пробела, обрезать строку.

Как обрезать строку до n-ого пробела?
Здравствуйте, знатоки. Как можно обрезать строку до определенного символа пробела. К примеру 4.

Как обрезать строку до первого символа не 0?
Как обрезать строку до первого символа не 0? Циклами писать можно, но не хочется. Например.
311 / 271 / 118
Регистрация: 05.06.2013
Сообщений: 868
SELECT SUBSTRING(СТОЛБЕЦ, 1, INSTR(СТОЛБЕЦ, ' ')-1) FROM TABLE;
Регистрация: 29.08.2014
Сообщений: 4
Проблема в том, что у нас SQL 2000, а там нет функции INSTR. Может еще есть варианты
311 / 271 / 118
Регистрация: 05.06.2013
Сообщений: 868
Сообщение от Lisa 
Проблема в том, что у нас SQL 2000, а там нет функции INSTR. Может еще есть варианты
Что же тогда тему в разделе MySQL создали если у вас MS SQL 2000?
SELECT SUBSTRING(СТОЛБЕЦ, 1, CHARINDEX(' ', СТОЛБЕЦ)-1) FROM TABLE;
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как прочитать строку из файла до первого пробела
Друзья, возникла нужда прочитать текст из файла до первого пробела. Файл *txt. Догадываюсь.

Обрезать строку с конца до первого встречающегося «\»
Ребят, подскажите, как можно обрезать строку с конца до первого встречающегося "\"?

Как в каждую строку(130 000 строк) txt-файла добавить символ табуляции (TAB) после первого значимого пробела (SPACE)?
Как в каждую строку большого(130 000 строк) txt-файла добавить символ табуляции (TAB) после первого.
SUBSTR ФУНКЦИЯ
Функция Oracle/PLSQL SUBSTR позволяет извлекать подстроку из строки.
Синтаксис
Синтаксис функции Oracle/PLSQL SUBSTR:
SUBSTR( string, start_position, [ length ] )
Параметры или аргументы
string исходная строка.
start_position позиция для начала извлечения подстроки. Первая позиция в
строке всегда равна 1.
length не является обязательным. Определяет количество символов для извлечения. Если этот параметр не указан, функция SUBSTR вернет всю строку.
Примечание
- Если start_position равно 0, то функция SUBSTR примет параметр start_position как 1 (то есть: первая позиция в строке).
- Если start_position является положительным числом, то функция SUBSTR начинает считать с начала строки.
- Если start_position является отрицательным числом, то функция SUBSTR начинается с конца строки и считает в обратном направлении.
- Если length является отрицательным числом, то функция SUBSTR возвращает значение NULL.
- Oracle/PLSQL функция SUBSTR аналогична функции ПСТР (MID) в MS Excel
Применение
Функцию SUBSTR можно использовать в следующих версиях Oracle/PLSQL:
- Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i
Пример
Рассмотрим несколько примеров функции SUBSTR и изучим, как использовать функцию SUBSTR в Oracle/PLSQL.
Обрезка строки в sql

В MySQL, например, есть две функции, которые могут помочь:
— INSTR — возвращает первую позицию подстроки в строке.
— LEFT — обрезает текст с начала до указанной позиции.
Поэтому можно сделать так (-1 нужен, чтобы в результат не включать пробел):
SET @str = 'Некоторая строка с пробелами'; SELECT LEFT(@str, INSTR(@str, ' ') - 1);
Но, если в строке нет пробелов, то вернется строка с нулевой длиной. Для этого можно добавить условие, и если нет пробелов в строке — возвращать исходную строку.
SET @str = 'Некоторая_строка_без_пробелов'; SELECT IF( INSTR(@str, ' ') = 0, @str, LEFT(@str, INSTR(@str, ' ') - 1) );
P.S.: Но, если Вам это нужно не для составления сложных вложенных запросов, то лучше такую обработку перенести на клиентский код.
