第二个表是使用整数而不是字符串错误构造的。原始表使用了一个字符串。(字段的字符串是压缩到一个字段中的其他三个数字 ID 的混合物)
事实证明,使用 int-to-string 链接到另一个表存在问题。我想将第二个表中的字段从整数更改为字符串,并在现有整数前面添加前缀“00”(零-零) - 现在是一个字符串。这是两者之间的唯一区别。
我猜我可能可以将两者与“LIKE”匹配,但想要完全匹配,这应该是一次性修复。
谢谢!
快活
第二个表是使用整数而不是字符串错误构造的。原始表使用了一个字符串。(字段的字符串是压缩到一个字段中的其他三个数字 ID 的混合物)
事实证明,使用 int-to-string 链接到另一个表存在问题。我想将第二个表中的字段从整数更改为字符串,并在现有整数前面添加前缀“00”(零-零) - 现在是一个字符串。这是两者之间的唯一区别。
我猜我可能可以将两者与“LIKE”匹配,但想要完全匹配,这应该是一次性修复。
谢谢!
快活
假设 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查看它的实际效果
怎么样(在MySQL中)
SELECT CONCAT('00', CAST(field AS CHAR)) AS newfield
但是,如何将第一个表从字符串转换为整数呢?
首先添加与整数数据列具有相同数据的字符串数据类型的另一列。
更新表 SET column2 = CAST(column1 AS CHAR)
然后,您可以在列前添加“00”前缀以使用以下查询。
更新表 SET column2 = CONCAT('00',column2)
希望这能解决你的问题