期待どおりに単一のレコードを返す次の SQL ステートメントがあります。
select * from geodatasource_cities C,
geodatasource_countries D
where C.CC_FIPS = D.CC_FIPS
and D.CC_ISO='AU'
and UCASE(TRIM(C.FULL_NAME_ND)) LIKE '%JAN JUE%';
ただし、次の SQL ステートメントを使用すると、レコードが返されません。LIKE 句を equal to 句に変更しただけです。
select * from geodatasource_cities C,
geodatasource_countries D
where C.CC_FIPS = D.CC_FIPS
and D.CC_ISO='AU'
and UCASE(TRIM(C.FULL_NAME_ND)) = 'JAN JUE';
なぜこれが起こっているのか理解できる人はいますか?
同様に、次のステートメントを使用します。
select LENGTH(COUNTRY_NAME),
LENGTH('Australia'),
COUNTRY_NAME
from countries
WHERE UCASE(TRIM(COUNTRY_NAME)) LIKE '%AUSTRALIA%'
戻り値:
10 | 9 | オーストラリア
編集
データのインポートに使用した SQL のサンプルを次に示します。
load data local infile 'CITIES.TXT'
into table geodatasource_cities
fields terminated by '\t'
lines terminated by '\n'
(CC_FIPS,FULL_NAME_ND);
\n が私のデータに大混乱をもたらしているようです。明日、別のオプションでインポートしてみます。