2016-04-09 59 views
0

Bir proje üzerinde çalışıyorum, ancak adının, adının ve soyadının, tam adlar ve benzersiz bir kullanıcı adı için sonunda bir sayı arasında bir noktaya sahip kullanıcı adı olarak nasıl aldığımı bilmek ister misiniz? MySQL'de. Tıpkı Facebook'un sistemi gibi. Ayrıca eğer orta ad NULL ise, o zaman ortada bir boşluk gibi değil istiyorum.Benzersiz bir kullanıcı adı için, ad, orta ad ve soyadı, isimler arasında bir nokta ve sonunda bir sayı ile nasıl kullanıcı adı olarak alırım?

Çok farklı şeyler denedim, ama henüz hiçbir şey çalışmadı.

ben geldim ne kadar yakın, ama onlar göbek adın yoksa, bu bir yerine iki nokta görüntüleyecek bir sorun var
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 

. Ama yine de, ad, soyad ve soyadını, tam adlar ve benzersiz bir kullanıcı adı için bir sayı arasında bir nokta ile kullanıcı adı olarak almak için bir şeye ihtiyacım var.

+0

alakalı olabilir: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ –

cevap

1

Sana sonunda sayısı için istediğini biliyorum, ama isim için, concat_ws() kullanmayın: değerlerden herhangi ardından değeri oldukça böylece f.l (göz ardı edilir NULL ise

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

f..l). ad/soyadı NULL olduğunda yine ayırıcılar istiyorsanız

ardından coalesce() kullanın:

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

Sen concat() kullanılarak sonunda veya (bağımsız değişken olarak ekleyerek bir numara Concat; bu durumda sayıdan önce bir nokta olacaktır).

+0

Sonunda sayı ne kast Eğer iki veya daha fazla kullanıcı aynı adı ve soyadı, hatta ilk adı, orta adı ve soyadı varsa, kullanıcı adının sonunda bir numarayla onları bekletmek iyi olur, bu yüzden paylaşmazlar Aynı hesaplar, burada bir ekran görüntüsünü Facebook’un kullandığı sistemin bir örneğine bağlayacağım. http://i.imgur.com/NFAQ7bL.png –

+0

@AllanVester. . . Kullanıcılarınız arasında nasıl farklılaştığınız sorusundan tamamen belirsizdir. Bir kullanıcı kimliğiniz varsa, bunu (veya üzerinde bazı değişiklikler) kullanabilirsiniz. –

+0

Tamam, ama şunu buldum, http://stackoverflow.com/questions/7519892/generate-unique-username-from-first-and-last-name, bu tam olarak olmasını istediğim gibi, ancak kodu Benim için biraz belirsiz, çünkü programlamada yeniyim. –

0

kullanıcı adı sonunda sayıları o zaman kullanıcının id veya SL değerini kullanabilirsiniz istiyorum. Kimlik veya SL kolon DEĞİL BOŞ, OTO ARTTIRMA olmalıdır. Sen kullanabilirsiniz:

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