SQL Query将前缀放在特定字段的所有记录中

时间:2013-07-12 02:43:27

标签: sql mass-assignment

使用整数而不是字符串来错误构造第二个表。原始表使用了一个字符串。 (字段的字符串是压缩到一个字段中的三个其他数字ID的混合)

事实证明,使用int-to-string链接到另一个表存在问题。我想将第二个表中的字段从整数更改为字符串,并在现有整数前面添加前缀“00”(零 - 零) - 现在是一个字符串。这是两者之间的唯一区别。

我猜可能会将两者匹配为“LIKE”,但想要完全匹配,这应该是一次性修复。

谢谢!

乔利

3 个答案:

答案 0 :(得分:0)

(在MySQL中)

SELECT CONCAT('00', CAST(field AS CHAR)) AS newfield

但是,如何将第一个表从字符串转换为int?

答案 1 :(得分:0)

首先添加另一列字符串数据类型,其数据与整数数据列相同。

UPDATE表SET column2 = CAST(column1 AS CHAR)

然后,您可以使用以下查询将“00”前缀添加到列中。

UPDATE表SET column2 = CONCAT('00',column2)

HOpe这解决了你的问题

答案 2 :(得分:0)

假设您想要首先更改列的数据类型MySql,例如

ALTER TABLE tab MODIFY COLUMN IDBoth VARCHAR(10); -- or what ever size is needed

然后使用这样的concat进行更新:

UPDATE TAB as t1
JOIN tab as t2
ON t1.id1 = t2.id2 -- Add additionation join criteria if needed to get right join
SET t1.IDBOTH = CONCAT('00', t1.IDBOTH);

使用此SQLFIDDLE

查看此操作