如何将名字、中间名和姓氏作为用户名,在名字之间加一个点,最后加一个数字表示唯一的用户名


How do I get first name, middle name and last name as username with a dot in between the names and a number at the end for a unique username?

我正在做一个项目,但我想知道如何将名字、中间名和姓氏作为用户名,并在它们的全名之间加一个点,最后加一个数字作为唯一的用户名?在MySQL中。就像Facebook的系统一样。我也希望这样,如果中间的名称是NULL,那么它不喜欢在中间有空格。

我尝试了很多不同的方法,但都没有成功。

SELECT COALESCE(CONCAT(first_name, '.', COALESCE(CONCAT(middle_name, '.', last_name), 
first_name,middle_name,last_name)), middle_name,'.', COALESCE(CONCAT(first_name, '.', 
last_name),first_name,last_name)) AS username FROM users

这就是我已经接近的程度,但有一个问题,如果他们没有中间名,它会显示两个点,而不是一个。但我仍然需要一些东西来获得名字、中间名和姓氏作为用户名,它们的全名之间有一个点,末尾有一个数字表示唯一的用户名。

我不知道你想要末尾的数字是什么,但对于名称,请使用concat_ws():

select concat_ws('.', first_name, middle_name, last_name)

如果任何值是NULL,则忽略该值(因此f.l而不是f..l)。

如果名字/姓氏为NULL时仍需要分隔符,则使用coalesce():

select concat_ws('.', coalesce(first_name, ''), middle_name, coalesce(last_name, ''))

您可以使用concat()在末尾插入一个数字,也可以将其添加为参数(在这种情况下,数字前面会有一个点)。

如果您希望在用户名末尾添加数字,则可以使用用户的idSL值。IDSL列应为NOT NULLAUTO INCREMENT。您可以使用:

select concat_ws('.', first_name, middle_name, last_name, id)