I have a table called ‘Artists’. There is a column called Artist in ‘Artists’.
x
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