随着我的项目收集速度,我注意到有些用户正在错误地输入飞机模型 - (字段是“模型”),例如 -
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”
我猜这是我想念的简单事。
答案 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%';
此外,您应该考虑为人们用于输入此数据的任何形式添加一些输入验证,以便将来数字始终采用正确的格式。