如何对MySQL表列进行子串

Rak*_*esh 47 mysql database

我想从表中选择一个字段并将其子串.

例如:

VAN1031 --> 1031
Run Code Online (Sandbox Code Playgroud)

我试过这个,但语法不正确:

SELECT SUBSTR(R.regnumber,3,3) from registration R
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

Mar*_*ers 40

如果要选择特定索引右侧的所有字符,则不需要第三个参数(长度):

SELECT SUBSTR(R.regnumber, 4)
FROM registration AS R
Run Code Online (Sandbox Code Playgroud)

我还将起始索引更改为4,因为在SQL字符串中是1索引而不是0索引,因为它们在许多流行的编程语言中.

  • 为什么这不是 0 索引?你会认为这不是由计算机科学家建造的 (2认同)

Ani*_*ani 29

您可以使用:

SUBSTR(string,position)
SUBSTR(string,position,length)
SUBSTRING_INDEX(string, delimiter, count)
Run Code Online (Sandbox Code Playgroud)

例子:

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
Run Code Online (Sandbox Code Playgroud)

这个链接.

  • 在您的示例中,`ababab`应该替换为`abcdef`,因为输出会因为重复`ab`文本而令人困惑. (7认同)

Tar*_*ryn 7

你可以使用SUBSTRING():

select substring(col1, 4)
from table1
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo.所以你的查询将是:

SELECT substring(R.regnumber,4) 
from registration R
Run Code Online (Sandbox Code Playgroud)

如果要指定要返回的字符数,请执行以下操作:

select substring(col1, 4, 4)
from table1
Run Code Online (Sandbox Code Playgroud)