MySQL删除所有字段的前两个字符
Posted
技术标签:
【中文标题】MySQL删除所有字段的前两个字符【英文标题】:MySQL Remove first two characters of all fields 【发布时间】:2012-05-10 11:18:51 【问题描述】:我有一些看起来像这样的数据:
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)
【问题讨论】:
您应该在数据库中使用NULL
(不是字符串,真正的空值)而不是N/A
。
这能回答你的问题吗? How do I delete the first 3 characters in mysql?
【参考方案1】:
试试
UPDATE d1
SET d1_val = SUBSTRING(d1_val, 3)
WHERE d1_val <> 'N/A'
【讨论】:
【参考方案2】:关于多次执行的更安全的查询是使用LIKE '_:%'
:
UPDATE d1
SET d1_val = SUBSTRING(d1_val, 3)
WHERE d1_val LIKE '_:%'
在前一次查询运行后,它将更改每一行看起来像 C:10
、E:100
等,但不会更改 10
、100
。
(假设:
之前总是有一个字母。如果更多 - 使用LIKE '%:%'
)
【讨论】:
【参考方案3】:UPDATE d1
SET d1_val = SUBSTRING_INDEX(d1_val , ":",-1);
也完成这项工作,保持“N/A”不变。
【讨论】:
【参考方案4】:使用SUBSTRING(column_name, character_to_remove)
解决方案,
SUBSTRING(d1_val, 3)
注意:您可以在 SELECT 或 UPDATE 语句中使用它
【讨论】:
以上是关于MySQL删除所有字段的前两个字符的主要内容,如果未能解决你的问题,请参考以下文章