I have a table called ‘Artists’. There is a column called Artist in ‘Artists’.
Artist firstname lastname Firstname lastname Firstname Lastname firstname
I tried the query on this Post
I want to captalize first letter of each artist’s firstname & lastname in my ‘Artists’ table. Expecting:
Artist Firstname Lastname Firstname Lastname Firstname Lastname Firstname
Some of my Artists don’t have firstname and the query is putting an extra character in beginning:
Advertisement
Answer
One way to work around this issue is to use a CASE expression, choosing the formula from the other question when Artist has two names, and just capitalising the first letter when there is only one name:
SELECT
CASE WHEN Locate(' ', Artist) = 0 THEN
-- firstname only
CONCAT(UPPER(SUBSTRING(Artist, 1, 1)),
LOWER(SUBSTRING(Artist, 2)))
ELSE
-- firstname and lastname
CONCAT(UPPER(SUBSTRING(Artist, 1, 1)),
LOWER(SUBSTRING(Artist, 2, Locate(' ', Artist)-1)),
UPPER(SUBSTRING(Artist, Locate(' ', Artist)+1,1)),
LOWER(SUBSTRING(Artist, Locate(' ', Artist)+2)))
END AS Artist
FROM Artists
Output:
Artist Firstname Lastname Firstname Lastname Firstname Lastname Firstname Lastname Firstname Firstname
