Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择前导为零的查询_Mysql - Fatal编程技术网

Mysql 选择前导为零的查询

Mysql 选择前导为零的查询,mysql,Mysql,我有一个简单的查询…但有两个不兼容的表 SELECT a.name b.occupation FROM table1 a LEFT JOIN table2 b ON a.ID = B.ID 问题是表1和表2有数据 ID ID HV HV 8 008 13 013 A5 A5 请提供帮助您可以通过在整数上下文中计算值,将值转换为其整数值: SELECT a.name b.occupation FROM table1 a LEFT J

我有一个简单的查询…但有两个不兼容的表

SELECT
a.name
b.occupation
FROM table1 a
LEFT JOIN table2 b
ON a.ID = B.ID
问题是表1和表2有数据

ID       ID
HV       HV
8        008
13       013
A5       A5

请提供帮助

您可以通过在整数上下文中计算值,将值转换为其整数值:

SELECT
a.name
b.occupation
FROM table1 a
LEFT JOIN table2 b
ON a.ID = B.ID+0
但这可能会破坏使用索引进行连接的任何机会。要进行优化,您必须在两个表中以兼容的格式存储值。

您可以使用mysqls函数

LEFT JOIN table2 b
ON a.ID = TRIM(LEADING 0 FROM B.ID)

这不起作用,像
'HV'
'A5'
这样的条目将变为
0
。请看这里:+1,这是一个比我的更好的解决方案,但它也破坏了索引。是的,但我不知道您将如何保留索引,因为您必须以某种方式修改列以进行直接比较:S这能以某种方式实现吗?然后我必须建议您确保表的格式相同。当您加入时,您正在进行比较。当值不相同时,无法进行此比较。您还可以制作一个例程,将数字强制转换为整数(有符号或无符号数据类型),但这仍然会改变值,从而破坏您可能拥有的任何索引。