0

使用查询时:

select c_name from country where c_code_numeric='004';

它返回正确的结果。

但是有了这个:

select c_name from country where c_code_numeric='4';

返回空结果

我的问题是

  • 为什么会这样?

  • 如何避免这种情况?

c_code_numeric是 VARChar。

在 004 或仅 4 的两种情况下,这对我来说都很好:

select c_name from country where c_code_numeric +0='4';
4

3 回答 3

2

如果 c_code_numeric 是包含数字的 VARCHAR,则可以使用以下查询:

SELECT c_name
FROM country
WHERE c_code_numeric=4

这会将 c_code_numeric 转换为一个数字,或者您可能还想试试这个:

SELECT c_name
FROM country
WHERE c_code_numeric+0=4
于 2013-08-28T07:47:37.707 回答
0

您可以使用 mysql cast 函数来显式转换

select c_name from country where CAST(c_code_numeric AS UNSIGNED) = 4
于 2013-08-28T07:49:57.233 回答
0

您可以在前导零前面加上LPAD

SELECT c_name FROM country WHERE c_code_numeric = LPAD('4', 3, '0')

用法

LPAD(value, lenght, start_with)

例子:

LPAD('4', 3, '0')   // 004
LPAD('14', 3, '0')  // 014
LPAD('114', 3, '0') // 114
于 2013-08-28T07:56:43.123 回答