使用查询时:
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';
答案 0 :(得分: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
答案 1 :(得分:0)
你可以使用mysql强制转换函数来显式cast
select c_name from country where CAST(c_code_numeric AS UNSIGNED) = 4
答案 2 :(得分: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