I have the following SQL statement which returns a single record as expected:
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%';
However, If I use the following SQL statement, no records are returned. I have only changed the LIKE clause to an equal to clause:
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';
Can anybody please help me understand why this may be happening?
Similarly, with the following statement:
select LENGTH(COUNTRY_NAME),
LENGTH('Australia'),
COUNTRY_NAME
from countries
WHERE UCASE(TRIM(COUNTRY_NAME)) LIKE '%AUSTRALIA%'
It returns:
10 | 9 | Australia
EDIT
Here is a sample of the SQL I used to import the data:
load data local infile 'CITIES.TXT'
into table geodatasource_cities
fields terminated by '\t'
lines terminated by '\n'
(CC_FIPS,FULL_NAME_ND);
It appears as though the \n is wreaking havoc on my data. I will try to import with alternative options tomorrow.
In the second case, your requiring an exact match in the database, while in the first case, the name must contain the string "JAN JUE". Is the full name exactly "JAN JUE" in the database? You may also need to check your casing. I know for MS-SQL you can specify your preferred treatment of casing for comparisons. One selection may be case sensitive while the other is not.
Notes about that for the like clause in MySql: http://www.mysqltutorial.org/sql-like-mysql.aspx
EDIT
The MySql Trim() only removes spaces. So you could have a line break. (It could also be non breaking spaces, you may need to test to see if trim removes those also, can't find a definitive answer on that.) Since your getting a different length on fields of one more, I'd suggest checking to make sure your data doesn't have trailing hidden characters like that.
This problem is talked about in this Stack Overflow Question: Does the MySQL TRIM function not trim line breaks or carriage returns?
精彩评论