如何对MySQL表列进行子串

时间:2012-10-07 17:55:52

标签: mysql database

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

例如:

VAN1031 --> 1031

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

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

如何做到这一点?

5 个答案:

答案 0 :(得分:38)

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

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

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

答案 1 :(得分:26)

您可以使用:

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

来自this link

答案 2 :(得分:7)

您可以使用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

答案 3 :(得分:2)

SELECT substring(R.regnumber FROM 4) FROM registration AS R;

如果您想将该部分视为整数而不是字符串,您可以写:

SELECT CAST(substring(R.regnumber FROM 4) AS UNSIGNED) FROM registration as R;

答案 4 :(得分:1)

有时您需要在没有最后一个字符的情况下捕获列。例如,我有:

This is a string

让我们说由于某种原因,我想要没有最后6个字符的列:

This is a 

我们可以做(使用@bluefeet的回答和LENGHT):

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

这只是一个例子,但你知道了,我正在修复错误的数据库导入。