2011-09-06 60 views
2

很簡單 我有串那樣的列:MySQL的:如何從柱去除串

abc1 
abc2 
abc3 
abc4 
abc5 

我需要從該列中刪除「ABC」,並保持在右邊只數,因此列將只有數,如:

1 
2 
3 
4 
5 

我想過這樣的不便,但它不工作

update table2 
-> set col1 = case when 'abc1' then 1 
-> else end; 

我知道如何連接文本,我不知道如何撤消它...幫助請^^;

+3

你的例子顯示了所有長度相同的字符串。這是真的? – McArthey

回答

3

@McArthey已經暗示它,但是這是很容易做到當「 abc「始終是」abc「(即長度不變)。

其中各種string functions是特別的一種:RIGHT()。這使您可以從字符串中選擇固定數量的字符。例如再加上LENGTH()功能

SELECT RIGHT('abc3',1) -- Results in "3" 
SELECT RIGHT('abc3',2) -- Results in "c3" 

,可以斷定這些數字是什麼,過去的3個字符。即

SELECT RIGHT('abc3',LENGTH('abc3')-3) -- Results in "3" 

很顯然,我使用硬字符串('abc3'),但這些很容易被列名替換。

這裏需要注意的是,這些都是基於固定長度的字母前綴。在你的例子中,變量(改變)「abc」越多,越難從列中選取數值。

+0

這是我在回答中提供的第一個鏈接。 ;-)但是,謝謝。 –

+0

很抱歉沒有跟着它。我會刪除我的heh – McArthey

+0

abc永遠不會改變,但數字會從1到30. – madkitty

1

如果這些是單一的數字值,你可以使用

select right(column,1) ... 

您也可以找到REGEXP文檔有用的,如果它是更爲複雜的。

如果您嘗試修改列,您將不得不分別取值,然後將它們連接在一起。由於我不知道你要完成的是什麼,所以很難給出準確的答案,但是你可以用SUBSTR做些事情來獲取單獨的值。

得到 'ABC':SUBSTR(列,1,3)

獲取數字:SUBSTR(列4)