2

很简单,我有一列这样的字符串:

 abc1
 abc2
 abc3
 abc4
 abc5

我需要从此列中删除 'abc' 并仅保留右侧的数字,因此列将只有以下数字:

 1
 2
 3
 4
 5

我想过那样的事情,但它不起作用

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

我知道如何连接文本,我不知道如何撤消它...请帮助^^;

4

2 回答 2

3

@McArthey 已经暗示了这一点,但是当“abc”始终是“abc”(即长度不变)时,这很容易做到。)

在各种字符串函数中,特别是一个:RIGHT(). 这允许您从字符串中选择固定数量的字符。例如

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

结合该LENGTH()功能,您可以得出结论,数字是第三个字符之后的任何内容。IE

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

显然我使用的是硬字符串 ( 'abc3'),但是这些可以很容易地替换为列名。

这里需要注意的是,这些都是基于固定长度的字母前缀。在您的示例中,“abc”的变量(更改)越多,从列中提取数值就越难。

于 2011-09-06T04:29:23.123 回答
1

如果这些是单个数字值,您可以使用

select right(column,1) ...

如果REGEXP文档更复杂,您可能还会发现它很有用。

如果您尝试修改该列,则必须分别获取这些值,然后将它们重新连接在一起。很难给出准确的答案,因为我不知道你想要完成什么,但你可以用 SUBSTR 做一些事情来获取单独的值。

获取'abc':SUBSTR(列,1,3)

获取数字:SUBSTR(column, 4)

于 2011-09-06T04:25:54.197 回答