Я хочу выбрать поле из таблицы и подстроить его.
Например:
VAN1031 --> 1031
Я пробовал это, но это неправильный синтаксис:
SELECT SUBSTR(R.regnumber,3,3) from registration R
Как это можно сделать?
Я хочу выбрать поле из таблицы и подстроить его.
Например:
VAN1031 --> 1031
Я пробовал это, но это неправильный синтаксис:
SELECT SUBSTR(R.regnumber,3,3) from registration R
Как это можно сделать?
Вам не нужен третий аргумент (длина), если вы хотите выбрать все символы справа от определенного индекса:
SELECT SUBSTR(R.regnumber, 4)
FROM registration AS R
Я также изменил начальный индекс на 4, потому что в строках SQL 1-индексируется, а не 0-индексируется, поскольку они находятся во многих популярных языках программирования.
Вы можете использовать:
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
От эта ссылка.
Вы можете использовать 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
SELECT substring(R.regnumber FROM 4) FROM registration AS R;
и если вы хотите принять часть как целое число, а не строку, которую вы можете написать:
SELECT CAST(substring(R.regnumber FROM 4) AS UNSIGNED) FROM registration as R;
Я заметил, что индекс mysql начинается с 1 вместо нуля, как это делали многие языки программирования.
SELECT SUBSTRING(R.regNumber,1,3) FROM registration AS R
Возвращает VAN и
SELECT SUBSTRING(R.regNumber,4) FROM registration AS R
Возвращает оставшуюся часть строки как 1031
Иногда вам нужно поймать столбец без каких-либо последних символов. Например, у меня есть:
This is a string
Скажем, что по какой-то причине я хочу колонку без последних 6 символов:
This is a
Мы можем сделать (используя @bluefeet answer и LENGHT):
select substring(col1, 1,LENGTH(col1)-7)
from table1
Это был только пример, но вы поняли, что я использую, чтобы исправить неправильный импорт базы данных.