2011-09-06 61 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)