18

我有一些看起来像这样的数据:

C:10
R:200
N/A
E:3
N/A
N:77

我正在尝试删除每行的前两个字符,并跳过N/A我一直试图弄清楚如何做到这一点SUBSTRING但没有运气的行。

UPDATE d1
SET d1_val = SUBSTRING(d1_val, 1, LENGTH(d1_val)2)
4

4 回答 4

37

尝试

UPDATE d1
SET d1_val = SUBSTRING(d1_val, 3)
WHERE d1_val <> 'N/A'
于 2012-04-30T19:06:28.503 回答
8

关于多次执行的更安全的查询正在使用LIKE '_:%'

UPDATE d1
SET d1_val = SUBSTRING(d1_val, 3)
WHERE d1_val LIKE '_:%'

在前一次查询运行之后,它将改变每一行看起来像C:10, E:100etc. 但不是。10100

(假设之前总是有一个字母:。如果更多 - 使用LIKE '%:%'

于 2012-04-30T19:18:05.870 回答
1

采用SUBSTRING(column_name, character_to_remove)

解决方案,

SUBSTRING(d1_val, 3)

注意:您可以在 SELECT 或 UPDATE 语句中使用它

于 2021-06-12T17:42:50.433 回答
0
UPDATE d1
SET d1_val = SUBSTRING_INDEX(d1_val , ":",-1);

也完成这项工作,保持“N/A”不变。

于 2019-03-22T13:57:07.677 回答