我想从表中选择一个字段并将其子串。
例如:
VAN1031 --> 1031
我试过这个,但语法不正确:
SELECT SUBSTR(R.regnumber,3,3) from registration R
如何做到这一点?
答案 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
这只是一个例子,但你知道了,我正在修复错误的数据库导入。