Como subtrair uma coluna de tabela MySQL
quero seleccionar um campo da tabela e substringi-lo.
por exemplo:
VAN1031 --> 1031
tentei isto, mas é sintaxe imprópria:
SELECT SUBSTR(R.regnumber,3,3) from registration R
Como isso pode ser feito?
6 answers
Não precisa do terceiro argumento (comprimento) Se quiser seleccionar todos os caracteres à direita de um índice específico:
SELECT SUBSTR(R.regnumber, 4)
FROM registration AS R
Eu também mudei o índice inicial para 4 Porque em strings SQL são 1-indexados e não 0-indexados como eles são em muitas linguagens de programação populares.
Pode usar:
SUBSTR(string,position)
SUBSTR(string,position,length)
SUBSTRING_INDEX(string, delimiter, count)
Exemplos:
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
De esta ligação.
Pode usar SUBSTRING()
:
select substring(col1, 4)
from table1
Ver Violino SQL com demonstração. Então a sua pergunta seria:
SELECT substring(R.regnumber,4)
from registration R
Of if you want to specify the number of characters to return:
select substring(col1, 4, 4)
from table1
SELECT substring(R.regnumber FROM 4) FROM registration AS R;
E se quiser tomar a parte como um inteiro e não como um texto, pode escrever:
SELECT CAST(substring(R.regnumber FROM 4) AS UNSIGNED) FROM registration as R;
Reparei que o índice mysql começa a partir de 1 em vez de zero, como muitas linguagens de programação.
SELECT SUBSTRING(R.regNumber,1,3) FROM registration AS R
Devolve VAN e
SELECT SUBSTRING(R.regNumber,4) FROM registration AS R
Devolve a parte restante do texto como 1031
This is a string
Digamos que, por alguma razão, quero uma coluna sem os últimos 6 caracteres.
This is a
Podemos fazer (usando a resposta de @bluefeet e LENGHT):
select substring(col1, 1,LENGTH(col1)-7)
from table1
Foi apenas um exemplo, mas percebeste a ideia, estou a usar para corrigir uma importação de base de dados errada.