Как подстроить столбец таблицы MySQL

Я хочу выбрать поле из таблицы и подстроить его.

Например:

VAN1031 --> 1031

Я пробовал это, но это неправильный синтаксис:

SELECT SUBSTR(R.regnumber,3,3) from registration R

Как это можно сделать?

Вам не нужен третий аргумент (длина), если вы хотите выбрать все символы справа от определенного индекса:

SELECT SUBSTR(R.regnumber, 4)
FROM registration AS R

Я также изменил начальный индекс на 4, потому что в строках SQL 1-индексируется, а не 0-индексируется, поскольку они находятся во многих популярных языках программирования.

21
ответ дан 07 окт. '12 в 20:58
источник

Вы можете использовать:

SUBSTR(string,position)
SUBSTR(string,position,length)
SUBSTRING_INDEX(string, delimiter, count)

Примеры:

command                                      prints
-------------------------------------------  -----------
select substr("abcd", 1, 1)                  #a
select substr("abcd", 1, 2)                  #ab
select substr("abcd", 2, 1)                  #b
select substr("abcd", 2, 2)                  #bc
select substr("abcd", -2, 1)                 #c
select substr("abcd", -2, 2)                 #cd

select substring_index('ababab', 'b', 1);    #a
select substring_index('ababab', 'b', 2);    #aba
select substring_index('ababab', 'b', 3);    #ababa
select substring_index('ababab', 'b', -1);   #
select substring_index('ababab', 'b', -2);   #ab
select substring_index('ababab', 'b', -3);   #abab

select substr("abcd", 2)                     #bcd
select substr("abcd", 3)                     #cd
select substr("abcd", 4)                     #d
select substr("abcd", -2)                    #cd
select substr("abcd", -3)                    #bcd
select substr("abcd", -4)                    #abcd

От эта ссылка.

20
ответ дан 07 окт. '12 в 21:18
источник

Вы можете использовать SUBSTRING():

select substring(col1, 4)
from table1

Смотрите SQL Fiddle with Demo. Таким образом, ваш запрос будет выглядеть следующим образом:

SELECT substring(R.regnumber,4) 
from registration R

Если вы хотите указать количество возвращаемых символов:

select substring(col1, 4, 4)
from table1
6
ответ дан 07 окт. '12 в 20:59
источник
SELECT substring(R.regnumber FROM 4) FROM registration AS R;

и если вы хотите принять часть как целое число, а не строку, которую вы можете написать:

SELECT CAST(substring(R.regnumber FROM 4) AS UNSIGNED) FROM registration as R;
1
ответ дан 03 мая '16 в 23:19
источник

Я заметил, что индекс mysql начинается с 1 вместо нуля, как это делали многие языки программирования.

SELECT SUBSTRING(R.regNumber,1,3) FROM registration AS R

Возвращает VAN и

SELECT SUBSTRING(R.regNumber,4) FROM registration AS R

Возвращает оставшуюся часть строки как 1031

0
ответ дан 08 мая '17 в 11:49
источник

Иногда вам нужно поймать столбец без каких-либо последних символов. Например, у меня есть:

This is a string

Скажем, что по какой-то причине я хочу колонку без последних 6 символов:

This is a 

Мы можем сделать (используя @bluefeet answer и LENGHT):

select substring(col1, 1,LENGTH(col1)-7)
from table1

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

0
ответ дан 22 дек. '17 в 16:14
источник