MySQL, połącz dwie kolumny


85

W tabeli MySQL znajdują się dwie kolumny: SUBJECTi YEAR.

Chcę wygenerować alfanumeryczny, niepowtarzalny numer, który przechowuje połączone dane z TEMATU i ROKU.

Jak mogę to zrobić? Czy można użyć prostego operatora, takiego jak +?

Odpowiedzi:


183

Możesz użyć tej CONCATfunkcji w następujący sposób:

SELECT CONCAT(`SUBJECT`, ' ', `YEAR`) FROM `table`

Aktualizacja:

Aby uzyskać taki wynik, możesz spróbować tego:

SET @rn := 0;

SELECT CONCAT(`SUBJECT`,'-',`YEAR`,'-',LPAD(@rn := @rn+1,3,'0'))
FROM `table`

1
Twoja pierwsza odpowiedź SELECT CONCACT(SUBJECT, ' ', YEAR)naprawdę mi pomogła. +1
FastTrack

4
Wynik jest pusty, gdy którykolwiek wiersz w polach do konkatacji jest pusty. Jakie jest rozwiązanie tego problemu?
TSR

2
@TSR Dobre pytanie! Znalazłem odpowiedź dla Ciebie. Jeśli jedno z pól jest puste, musisz użyć operacji MySQL IFNULL. Więc powyżej wyglądałoby tak: SELECT CONCAT (IFNULL ( SUBJECT, ''), '-', IFNULL ( YEAR, ''), '-', LPAD (@rn: = @ rn + 1,3, '0')) FROMtable
Logan

17

Możesz użyć do tego php wbudowanego w CONCAT ().

SELECT CONCAT(`name`, ' ', `email`) as password_email FROM `table`;

zmień nazwę pola jako wymaganie

wtedy wynik jest

wprowadź opis obrazu tutaj

a jeśli chcesz połączyć to samo pole, używając innego pola, które to samo

SELECT filed1 as category,filed2 as item, GROUP_CONCAT(CAST(filed2 as CHAR)) as item_name FROM `table` group by filed1 

to jest wyjście wprowadź opis obrazu tutaj


1
Ładny. Tylko dla twojej informacji, CONCAT użyte tutaj to wbudowana funkcja MySQL, a nie funkcja php.
Yousaf Hassan

6

W php mamy dwie możliwości konkatenacji kolumn tabeli.

Pierwsza opcja za pomocą zapytania

W zapytaniu słowo kluczowe CONCAT używane do konkatenacji dwóch kolumn

SELECT CONCAT(`SUBJECT`,'_', `YEAR`) AS subject_year FROM `table_name`;

Druga opcja za pomocą symbolu (.)

Po pobraniu danych z tabeli bazy danych przypisz wartości do zmiennej, następnie za pomocą (.) Symbol i połącz wartości

$subject = $row['SUBJECT'];
$year = $row['YEAR'];
$subject_year = $subject . "_" . $year;

Zamiast podkreślenia (_) użyjemy spacji, przecinka, liter, cyfr… itd


-1
$crud->set_relation('id','students','{first_name} {last_name}');
$crud->display_as('student_id','Students Name');
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.