MySQL รวมสองคอลัมน์เป็นคอลัมน์เดียว


106

ฉันกำลังพยายามหาวิธีที่จะรวมสองคอลัมน์เข้าด้วยกัน แต่ยังคงได้รับค่า '0' ในคอลัมน์แทนการรวมคำ

นี่คือสิ่งที่ฉันได้ลองและอื่น ๆ :

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

SELECT column1 + ' ' + column2 AS column3
FROM table;

ใครช่วยบอกฉันหน่อยได้ไหมว่าฉันทำอะไรผิด?


1
คุณใช้ฐานข้อมูลอะไร คอลัมน์ทั้งสองประเภทมีอะไรบ้าง?
Gordon Linoff


ตรวจสอบสิ่งนี้: stackoverflow.com/questions/6427764/…
Choudhury Saadmaan Mahmid

ใช้คำตอบด้านบน แต่เพิ่มท่อ เลือก concat (column1, '|', column2) ช่วยในการเก่งในภายหลัง
Cosmic Hawk

คำตอบ:


167

ฉันเดาว่าคุณกำลังใช้ MySQL ที่ตัว+ดำเนินการเพิ่มพร้อมกับการแปลงค่าเป็นตัวเลขแบบไม่โต้ตอบ 0ถ้าค่าไม่ได้เริ่มต้นด้วยตัวเลขแล้วค่าที่แปลงเป็น

ลองสิ่งนี้:

select concat(column1, column2)

เพิ่มช่องว่างได้สองวิธี:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)

ฉันกำลังใช้sql server 2005และมันทำให้ฉันมีข้อผิดพลาดเมื่อIncorrect syntax near ')'.
hud

5
@coder. . . คำถามนี้ติดแท็ก "mysql" หากคุณมีคำถามเกี่ยวกับ SQL Server ให้ถามเป็นคำถามไม่ใช่ในความคิดเห็น
Gordon Linoff

ใช้งานได้กับ T-SQL เช่นกันโซลูชันที่ยอดเยี่ยมและเรียบง่าย ลดสองคอลัมน์เป็นหนึ่งเดียว
Ryan Battistone

23

ลองนี้มันได้ผลสำหรับฉัน

select (column1 || ' '|| column2) from table;

1
ดูเหมือนว่า Oracle
coburne

วิธีนี้ใช้ได้กับการรวมหลายคอลัมน์ (มากกว่า 2) ด้วย Thx
Kayathiri

มาตรฐาน SQL จัดเตรียมฟังก์ชัน CONCAT () เพื่อเชื่อมสองสตริงเข้าด้วยกันเป็นสตริงเดียว อย่างไรก็ตาม SQLite ไม่สนับสนุนฟังก์ชัน CONCAT () แต่จะใช้ตัวดำเนินการต่อ (||) เพื่อรวมสองสตริงเข้าด้วยกัน
PaulH


5

นี่เป็นวิธีเดียวที่ใช้ได้ผลสำหรับฉันเมื่อฉันต้องการช่องว่างระหว่างคอลัมน์ที่กำลังผสาน

select concat(concat(column1,' '), column2)

3

สำหรับแฟน ๆ MySQL ฉันชอบIFNULL()ฟังก์ชั่นนี้ คำตอบอื่น ๆ ที่นี่แนะนำการทำงานที่คล้ายกันกับISNULL()ฟังก์ชันในการใช้งานบางอย่าง ในสถานการณ์ของฉันฉันมีคอลัมน์คำอธิบายซึ่งก็คือNOT NULLและคอลัมน์ของหมายเลขซีเรียลซึ่งอาจเป็นได้NULLนี่คือวิธีที่ฉันรวมไว้ในคอลัมน์เดียว:

SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table;

ผลลัพธ์ของฉันชี้ให้เห็นว่าผลลัพธ์ของการเชื่อมสตริงเข้าด้วยกันกับNULLผลลัพธ์ในไฟล์NULL. ฉันได้รับค่าทางเลือกในกรณีเหล่านั้น


3

หากคุณกำลังดำเนินการอยู่Oracle:

SELECT column1 || column2 AS column3
FROM table;

หรือ

หากคุณกำลังทำงานกับ MySql แล้ว:

SELECT Concat(column1 ,column2) AS column3
FROM table;

1

ฉันใช้วิธีนี้และดีที่สุดตลอดไป ในรหัสโมฆะนี้ยังจัดการ

SELECT Title,
FirstName,
lastName, 
ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName 
FROM Customer

ลองนี่ ...



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.