MySQL更新查询?

时间:2017-12-05 15:29:34

标签: mysql

随着我的项目收集速度,我注意到有些用户正在错误地输入飞机模型 - (字段是“模型”),例如 -

737-8AS 737-8k3 757-222 等

我想通过查询做的是运行这些并添加一个前导“B”,例如上面的内容将更改为:

B737-8AS B737-8k3 B757-222

我的每日更新脚本中包含的内容是 -

/* Set Boeings */ UPDATE斑点SET模型='B707-%' WHERE模型LIKE '707-%'; UPDATE斑点SET模型='B717-%' WHERE模型LIKE '717-%'; UPDATE斑点SET模型='B727-%' WHERE模型LIKE '727-%'; UPDATE斑点SET模型='B737-%' WHERE模型LIKE '737-%'; UPDATE斑点SET模型='B747-%' WHERE模型LIKE '747-%'; UPDATE斑点{ {1}}模型SET模型='B757-%' WHERE斑点LIKE '757-%'; UPDATE模型SET模型='B767-%' WHERE斑点LIKE '767-%'; UPDATE模型SET模型{{1 }} {斑点{1}} {模型{1}} {模型{1}}

这会编辑数据以提供前导“B”,但它会在B737之后删除所有内容 -

其中“737-8AS / W”变为“B737-”,应该是“B737-8AS / W”

我猜这是我想念的简单事。

2 个答案:

答案 0 :(得分:2)

%只是一个外卡字符; update语句不知道通配符在where子句中匹配的内容。您需要在update语句中包含实际的当前值,例如:

UPDATE spotting SET model = CONCAT('B',model) WHERE model LIKE '707-%';

答案 1 :(得分:0)

我认为它应该只是SET model='B-' + model。您需要将新文本添加到现有值。 %在这种情况下什么都不做。因此,我认为您只需要一个更新语句,因为您将相同的内容添加到每一行。

UPDATE spotting SET model = 'B-' + model WHERE model LIKE '7%';

此外,您应该考虑为人们用于输入此数据的任何形式添加一些输入验证,以便将来数字始终采用正确的格式。