簡體   English   中英

如何對MySQL表列進行子串

[英]How to substring a MySQL table column

我想從表中選擇一個字段並將其子串。

例如:

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

我注意到mysql索引從1開始,而不是像許多編程語言那樣從零開始。

SELECT SUBSTRING(R.regNumber,1,3) FROM registration AS R

返回VAN和

SELECT SUBSTRING(R.regNumber,4) FROM registration AS R

返回字符串的剩余部分為1031

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

如果你想把這個部分作為整數而不是字符串你可以寫:

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

有時您需要在沒有最后一個字符的情況下捕獲列。 例如,我有:

This is a string

讓我們說由於某種原因我想要沒有最后6個字符的列:

This is a 

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

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

這只是一個例子,但你明白了,我用來修復錯誤的數據庫導入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM