0

クエリの使用中:

select c_name from country where c_code_numeric='004';

正しい結果を返します。

しかし、これで:

select c_name from country where c_code_numeric='4';

空の結果を返します

私の質問は

  • なぜそうなのですか?

  • これを回避する方法は?

c_code_numericVARChar です。

これは、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キャスト関数を使用できます

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 に答える